OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10179|回复: 1

usart中断函数进不去

[复制链接]

10

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2012-9-21
在线时间
0 小时
发表于 2012-9-29 17:03:01 | 显示全部楼层 |阅读模式
简单的说吧。我的程序发送接收都没问题。用jtag调试过。问题是,每次接受完一个字符要进入中断的时候中断函数就被挂起了



但是就是中断函数进不去
下面贴我的代码
#ifdef INT_RECV
//在这里开启接收中断
    nvic_enable(USART1_IRQChannel);
    USART1->CR1 |= (1<<5);//RXNEIE置位,使能串口接收中断   
#endif
初始化使能中断,没有设置 分组 和优先级,我觉得应该不是这里的问题。因为以前用外部中断实验不设置优先级也行。

中断函数
#ifdef INT_RECV
//这里添加中断处理函数
void USART1_IRQHandler(void)
{
    if(USART1->SR & (1<<5))
    {
        flag = 1;   
        usart_data = (USART1->DR);
    }
    usart_data=0;
    flag = 0;
}
#endif
希望大家指正
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2012-9-21
在线时间
0 小时
 楼主| 发表于 2012-9-29 17:10:25 | 显示全部楼层
解决了
    usart_data=0;
    flag = 0;
这两句始终会执行,应该
加到else中才行,
否则flag始终是0,造成了
while(1)
{
if(flag==1)
{
flag=0;
GPIOA->ODR &= ~(1<<8);
uart1_send(usart_data);
GPIOA->ODR|= (1<<8);
}

}
判断flag时候的错误。所以uart1——send(usart——data)始终不执行

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 03:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表