STM32中断函数

#ifndef_EXIT_H_#define_EXIT_H_voidexit_init(void);#endif#include<stm32f10x_lib.h>#inc... #ifndef _EXIT_H_
#define _EXIT_H_
void exit_init(void);
#endif

#include <stm32f10x_lib.h>
#include"led.h"
#include"sys.h"
#include"delay.h"
#include"key.h"
#include"exit.h"
void EXTI15_10_IRQHandler()
{
LED0=0;
delay_ms(1000);
}
int main()
{
Stm32_Clock_Init(3); //系统时钟设置
delay_init(50); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
// KEY_Init();
exit_init();
while(1)
{
LED0=1;
delay_ms(500);
LED0=0;
delay_ms(500);
LED0=1;
while(1);
}
}
#include <stm32f10x_lib.h>
#include"sys.h"
#include"exit.h"
void exit_init(void)
{
RCC->APB2ENR=1<<4;
GPIOC->CRH&=0X0F0FFFFF;//PA13,15设置成输入
GPIOC->CRH|=0X80800000;
Ex_NVIC_Config(GPIO_C,13,FTIR); //上升沿触发
MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2); //抢占2,子优先级2,组2

}
这个程序在不加中断处理的时候可以看到灯的闪烁也就是能进入while循环但是编译exit_init()的时候灯就不闪烁也就是进步了WHILE()循环。为什么啊郁闷啊?
如果再KEILL上单步执行就可以进入请问下什么原因导致的啊???谢谢
我用的STM32是stm32f107不是stm32f103跟这个有关系吗
展开
 我来答
zhujihejiang
2012-04-13 · 超过12用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:31.3万
展开全部
恶心的程序设计,
#1:又一个不使用库函数的?
一般使用库函数,可读性好多了,别人也更容易阅读,
特殊地方可采用直接寄存器写值的方式!
#2: 需理解中断的意义, 你在中断函数里面加这么大的延时有何意义?
这是单片机程序设计的忌讳, 可设全局变量,然后中断发生改变全局变量的值
再在执行函数里面判断全局变量的值。
#3: 中断函数未清除中断标志位.
追问
我知道不应该加延时,我只是想看理解一下中断我加上中断清楚了。还是不行但是仿真是可以进入中断的现在就是不明白下载到STM32是stm32f107就是进步去哎!!
追答
void EXTI15_10_IRQHandler() 中断函数里需加 清除中断标志位的操作
ivyxtvv
2012-04-11 · TA获得超过1177个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:94.4万
展开全部
没仔细看代码,不过单步没问题那肯定能进入while,灯不闪烁,很可能是持续进入中断的原因;会不会是输入脚持续有中断发生?或者,没有清除中断标志位?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亚俊113
2012-06-09
知道答主
回答量:4
采纳率:0%
帮助的人:5061
展开全部
Stm32_Clock_Init(3); //系统时钟设置
delay_init(50); //延时初始化
----------------->>
Stm32_Clock_Init(3); //系统时钟设置
delay_init(24); //延时初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式