knrt.net
当前位置:首页 >> stm32用了定时器中断,进不了主程序是因为什么 >>

stm32用了定时器中断,进不了主程序是因为什么

进中断不出来应该是你没有清除中断的标志位.定时器的使用网上配置方法很多啊,百度一搜 出来的都是

定时器做好初始化后,到达初始化设置的时间后会自动进入中断服务程序,这时候无论主程序运行在什么地方,都会进入到中断中.中断处理完后,在返回到主程序原来的位置继续执行.所以说不一定在主程序的哪里进入的中断

首先,我觉得#include "stm32f10x_it.h"从格式上来讲最好也写在#include "stm32f10x.h"后面其次,一般来说SystemInit()这个函数都是写在主函数外面执行的,我一般都是这么弄int __low_level_init(void){ SystemInit(); return 1;}int main();blablabla………………………………你单步运行过么?不要全速运行直接卡死,一步一步的看到底哪儿出了问题.你进入不了主函数说明在系统初始化时就出了问题,每个structure的定义一个一个检查吧

很好解决,在中断处理函数中加上TIMx->SR=0清除中断标记,否则会一直产生中断

1)我不知道你是怎么用DISABLE开启的.2)请检查中断函数名是否与启动代码中的中断函数名一致.3)你在中断函数里关时钟做什么用?4)不要在中断函数里做处理.

单步执行,在EXTI_Config那个函数里加断点,然后看看程序跑到哪里了肯定能解决或者按图改下程序、、加个状态变量

/*我不知道你之前的程序,没法判断你错在哪.试试我调试成功的吧,你对照着看看有什么错误.正常情况PB5678循环亮,中断EXTI0_IRQHandler()发生后PB56循环亮,EXTI1_IRQHandler()发生后PB78循环亮,EXTI0的优先级高于EXTI

nvic_prioritygroupconfig(nvic_proioritygroup_1);//把应用程序中断复位控制寄存器的10-8位设位1,表示1位抢断优先级,3位表示子优先级 nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;此处只能为0或1,因为1位来表示 nvic_initstructure.nvic_irqchannelsubpriority = 2;此处可以是0-7,因为是3位表示 把tim_irqchanne的抢断优先级设为0,子优先级设为2,数字越小优先级越高,抢断优先级可以打断其他的中断,而子优先级不能

你确定程序已经跑起来了?

你确定你使用的是交叉串口线,一般这种情况是引脚接线不正确引起的,我以前也出现过,后来认为的把串口线的Rx和Tx互换后就可以了

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com