熟悉timer32的朋友看下

2019-07-24 15:09发布

手里有块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
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
bryanlee512
2019-07-24 18:02
这个就是根据教程改的。不过教程都是用寄存器方式写的代码,最好是有熟悉库函数的使用或者中断操作流程的朋友指导下。

一周热门 更多>