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

串口中断

[复制链接]
zch952102 提问时间:2013-5-27 17:17 /
我用IAR Embedded Workbench for ARM 6.10软件编写串口中断程序
设置STM32为串口接收中断,串口在接收到PC机数据后,产生中断,并将数据发回PC机。
将程序下载到STM32上全速运行的话,接收及返回给PC机的数据均是正确的。
现在我想看STM32串口中断的运行过程,所以采用单步运行方式,进入串口中断程序后,再单步运行至出串口中断,
此时程序不知运行到哪里去了。这是为什么?   我的中断程序很简单,如下:
void USART1_IRQHandler(void)
{
  asm("nop");  
  asm("nop");
 
  u8 t=USART1->SR;
  u8 i=USART1->DR;
  USART1->DR=i+1;
  u8 p=USART1->SR;
  asm("nop");  
  asm("nop");
  asm("nop");  
  asm("nop");
}
另外有个问题:
我查看DISASSEMBLY 窗口对上中断程序的译码时,没有看到有PUSH指令,其内容如下:

USART1_IRQHandler:
    0x800017c: 0xbf00         NOP
  asm("nop");
    0x800017e: 0xbf00         NOP
  u8 t=USART1->SR;
    0x8000180: 0xf8df 0x04b8  LDR.W     r0, ??DataTable10_1     ; USART1_SR
    0x8000184: 0x8800         LDRH      r0, [r0]
  u8 i=USART1->DR;
    0x8000186: 0xf8df 0x14b8  LDR.W     r1, ??DataTable10_2     ; USART1_DR
    0x800018a: 0x8809         LDRH      r1, [r1]
  USART1->DR=i+1;
    0x800018c: 0xb2c9         UXTB      r1, r1
    0x800018e: 0x1c4a         ADDS      r2, r1, #1
    0x8000190: 0xf8df 0x34ac  LDR.W     r3, ??DataTable10_2     ; USART1_DR
    0x8000194: 0x801a         STRH      r2, [r3]
  u8 p=USART1->SR;
    0x8000196: 0xf8df 0x24a4  LDR.W     r2, ??DataTable10_1     ; USART1_SR
    0x800019a: 0x8812         LDRH      r2, [r2]
  asm("nop");  
    0x800019c: 0xbf00         NOP
  asm("nop");
    0x800019e: 0xbf00         NOP
  asm("nop");  
    0x80001a0: 0xbf00         NOP
  asm("nop");
    0x80001a2: 0xbf00         NOP
}
    0x80001a4: 0x4770         BX        lr
麻烦高手指教
 
收藏 评论1 发布时间:2013-5-27 17:17

举报

1个回答
zch952102 回答时间:2013-5-28 15:59:24

回复:串口中断

自己顶一个

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版