手里有块432的板子,想利用timer32中调用中断函数实现P1.0 led1间隔1s闪灭。
不知道下面代码哪儿有问题下载代码后直接到了__sleep();灯不闪,请教熟悉的朋友帮看下代码。
最好能解释下,调用中断服务程序ISR的流程
#include "driverlib.h"
#include <stdint.h>
#include <stdbool.h>
#include <math.h>
int main(void)
{
MAP_CS_initClockSignal(CS_MCLK,CS_LFXTCLK_SELECT,CS_CLOCK_DIVIDER_1);
//时钟初始化用了LFXTCLK时钟源,按照说明设置MCLK作为timer32的时钟,一分频频率32768hz
MAP_WDT_A_holdTimer();
P1DIR |= BIT0;
P1OUT &= ~BIT0;
MAP_Timer32_initModule(TIMER32_0_MODULE, TIMER32_PRESCALER_1, TIMER32_32BIT,
TIMER32_PERIODIC_MODE);
//timer32周期模式1分频32位周期模式计数
MAP_Timer32_setCount(TIMER32_0_MODULE,0x8000);
//timer32装0x8000为1s
__enable_interrupt();
//这部是按照例程来的是,否为打开总中断?
NVIC_ISER0 = 1 << ((INT_T32_INT1 - 16) & 31);
//中断服务寄存器设置timer32中断号,这两步操作怎么用库函数替代?
SCB_SCR |= SCB_SCR_SLEEPONEXIT;
//系统控制模块寄存器 退出ISR后休眠
MAP_Timer32_enableInterrupt(TIMER32_0_MODULE);
//使能timer32中断
MAP_Timer32_startTimer(TIMER32_0_MODULE, false);
//启动timer32使能周期模式
while (1)
{
__sleep();
}
}
void Timer32IsrHandler(void)//中断服务程序
{
TIMER32_INTCLR1 |= BIT0; // Clear Timer32 interrupt flag
P1OUT ^= BIT0; // Toggle P1.0 LED
} |