你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

請問程式如果有兩個中斷如何執行呢?

[复制链接]
sappppp 提问时间:2016-3-28 11:02 /
想要請教,我的程式裡面有兩個中斷void USART1_IRQHandler(void)做讀取PC輸入數據值 和 void TIM1_UP_IRQHandler(void)  做PWM輸出。
可是我發現我的中斷一直進入USART1_IRQHandler卻不會進入TIM1_UP_IRQHandler。可是如果我將讀取PC輸入數據值放再TIM1_UP_IRQHandler中,數據會錯誤。
所以想要請教,兩個中斷我要怎麼編程,使這兩個中斷都可以執行呢?
謝謝
收藏 评论3 发布时间:2016-3-28 11:02

举报

3个回答
无薪税绵 回答时间:2018-3-1 12:41:18
  1. void USART1_IRQHandler(void)                        //串口1中断服务程序
  2. {
  3.   u8 Res;
  4.   if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
  5.   {
  6.       //必须要清中断标志位
  7.       USART_ClearFlag(USART1,USART_FLAG_RXNE);        
  8.       USART_ClearITPendingBit(USART1, USART_IT_RXNE);

  9.      //读取接收到的数据
  10.       Res =USART_ReceiveData(USART1);//(USART1->DR);
  11.    }
  12. }

  13. //如果没有进入中断,就要查看:定时配置是否正常,是否开启了中断
  14. void TIM1_UP_IRQHandler(void)
  15. {
  16.    if ( TIM_GetITStatus(TIM1 , TIM_IT_Update) != RESET )
  17.    {
  18.          //必须清除中断标志位否则一直中断
  19.          TIM_ClearITPendingBit(TIM1 , TIM_FLAG_Update);
  20.     }

  21. }
复制代码

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

maxtch 回答时间:2018-3-1 13:08:53
每个中断都要快进快出,及时清除中断标志位。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

琦子 回答时间:2018-3-1 15:58:39
我怀疑楼主的串口是不是一直都在传送数据或者在串口中断里边一直有函数在运行,建议你对中断处理函数瘦身,还有就是调整一下定时器和串口的中断等级,看看这样会不会有所改善

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版