主题中讨论的其他器件:TM4C123
工具/软件:TI C/C++编译器
您好、先生、
我不熟悉嵌入式编程。因此、如果我的代码中有任何错误、请告诉我。
问题:
我正在使用 SysTick 计时器中断在 LED 闪烁程序中生成延迟。该程序如下所示、我将随附我的 c 文件 also.e2e.ti.com/.../8206.Main.c
#include "stdio.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "hw_memmap.h"
#include "driverlib/pin_map.h"
#include "inc/hw_types.h"
#include "driverlib/interrupt.h"
#include "driverlib/SysTick .h"
空延迟(int a);
volatile uint32_t count=0;//计数器来计算已调用的中断数量
int main()
{
SysCtlClockSet (SYSCTL_SYSDIV_2_5|SYSCTL_USE_OSC |SYSCTL_XTAL_8MHZ|SYSCTL_OSC_MAIN);//将系统时钟设置为50MHz
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);//启用端口 A 外设引脚
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOA));
GPIOPinTypeGPIOOutput (GPIO_Porta_base、GPIO_PIN_7);//将 portApin7设置为输出
计数= 0;
SysTickPeriodSet (SysCtlClockGet ());//设置 SysTick 计时器的周期。 SysTick 计时器周期
//等于系统时钟,产生1秒的周期。
IntMasterEnable();//启用处理器中断。
SysTickIntEnable();
SysTickEnable();//启用 SysTick。
while (1)
{
}}
void SysTick 处理程序(void){
//
//更新 SysTick 中断计数器。
//
count++;
//
//检查 SysTick 中断计数是否发生更改,如果发生更改
//向端口引脚写入高电平。
//
if (count = 1){
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_7、GPIO_PIN_7);
}
否则、如果(count ==2){
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_7、0);
计数= 0;}
}
上述代码正常工作、但 如果我在 while 循环(在 main 中为.e、while (1))内插入上述程序的突出显示部分、则该程序不会获取中断处理程序函数、它将仅在 while 循环内运行。 我在中断处理程序函数内递增计数、因为只有这样我才不能使 LED 闪烁。
我不明白为什么中断处理程序函数没有执行。请帮助我解决问题。如果您对我的代码有任何疑问、请随时与我联系。
谢谢、
Alphy Ouseph