熟悉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条回答
dirtwillfly
1楼-- · 2019-07-24 15:44
 精彩回答 2  元偷偷看……
bryanlee512
2楼-- · 2019-07-24 18:02
这个就是根据教程改的。不过教程都是用寄存器方式写的代码,最好是有熟悉库函数的使用或者中断操作流程的朋友指导下。
dirtwillfly
3楼-- · 2019-07-24 19:50
bryanlee512 发表于 2015-12-11 11:38
这个就是根据教程改的。不过教程都是用寄存器方式写的代码,最好是有熟悉库函数的使用或者中断操作流程的朋 ...

也有库的例程,
dirtwillfly
4楼-- · 2019-07-24 20:30
tirex_msp432p401ta001.zip (5.03 KB, 下载次数: 4) 2015-12-11 11:46 上传 点击文件名下载附件
firstblood
5楼-- · 2019-07-24 21:37
这个主要就是定时器的应用的掌握。
dirtwillfly
6楼-- · 2019-07-24 23:31
 精彩回答 2  元偷偷看……

一周热门 更多>