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

查看: 1321|回复: 1

串口中断

[复制链接]

2

主题

15

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-5-27 17:17:34 | 显示全部楼层 |阅读模式
我用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
麻烦高手指教
 
<
回复

使用道具 举报

2

主题

15

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-5-28 15:59:24 | 显示全部楼层

回复:串口中断

自己顶一个
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版