请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器 件型号:TM4C123GH6PM 工具/软件:Code Composer Studio 您好、我尝试生成周期性中断来驱动蓝色 LED (使其每秒闪烁一次)。
我已将时钟初始化为12.5MHz、因此根据该时钟计算了一个重新加载值、因此 SysTick 在生成中断之前会计时"重新加载值"次。
此外、我已经创建了一个处理程序来为中断提供服务、并要求中断闪烁。 我想问这是否正确、我正在等待我的板、但与此同时、我能够对此进行编码、
我希望有人能够指出任何错误、因为我还没有电路板、所以我无法测试。 下面是供参考的代码。 谢谢 #include #include #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "inc/tm4c123gh6a.h" void SysTick 初始化(unsigned long reload _value) { NVIC_ST_CTRL_R = 0;//禁用 SysTick NVIC_ST_RELOAD_R=RELOAD_VALUE;// SysTick 中断时间周期=(SysTK_LOAD+1)*时钟周期 NVIC_ST_CURRENT_R = 0; NVIC_SYS_PRI3_R = NVIC_SYS_PRI3_R&0x00FFFFFF;//优先级0 NVIC_ST_CTRL_R = 0x07;//启用 SysTick } void SysTick 处理程序(void) { IF (GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_2)) { GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3、0); } 其他 { GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、4); } } int main (void) { SysTick 初始化(12499999); SysCtlClockSet (SYSCTL_SYSDIV_16|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);//时钟频率为12.5MHz SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF); GPIOPinTypeGPIOInput (GPIO_PORTF_BASE、GPIO_PIN_4); GPIO_PORTF_LOCK_R = 0x4C4F434B; GPIOPadConfigSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);//启用 F4的上拉电阻、驱动强度不会影响输入 GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2); }