常见问答
- M051 系列(95)
- M0518 系列(97)
- M0519 系列(43)
- M0564 系列(1)
- Mini51 系列(90)
- Nano100 / 102 系列(101)
- Nano103 Base 系列(10)
- Nano110 / 112 LCD 系列(100)
- Nano120 USB 系列(111)
- Nano130 USB+LCD 系列(110)
- NUC029 系列(94)
- NUC100 / 200 系列(102)
- NUC120 / 122 / 123 / 220 USB 系列(116)
- NUC121/125 系列(1)
- NUC126 USB 系列(2)
- NUC130 / 230 CAN 系列(103)
- NUC131/NUC1311 CAN 系列(98)
- NUC140 / 240 USB+CAN 系列(114)
- M451 Base 系列(118)
- M451M 系列(117)
- M452 USB 系列(130)
- M4521 USB 系列(1)
- M453 CAN 系列(128)
- M463 CAN FD/USB HS 系列(1)
- M467 Ethernet/Crypto 系列(1)
- M471 系列(1)
- M479 Motor Control Series(1)
- M481 Base 系列(4)
- M482 USB FS OTG 系列(4)
- M483 CAN 系列(4)
- M484 USB HS OTG 系列(4)
- M485 Crypto 系列(4)
- M487 Ethernet 系列(4)
- M4TK 触摸 IC 系列(25)
- NUC442 / 472 系列(130)
- NUC472 Series(1)
- NUC505 系列(138)
产品
功能
+
常见问答
在中断程序操作寄存器的时候,需要注意什么问题? 日期:2016-12-22
如果在进入中断程序前后,都要操作同一个寄存器的话,此时会有操作的先后问题。
以操作寄存器GPIOA_OUT为例:
GPIOA_OUT的不同bit控制不同的管脚输出,如GPIOA_OUT[0]控制PA.0的输出、GPIOA_OUT[1]控制PA.1的输出。如果在主程序要写0x1到GPIOA_OUT控制PA.0输出高电平时,进入中断程序。而在中断程序也要写0x2到GPIOA_OUT,控制PA.1输出高电平,此时GPIOA_OUT = 0x2。当退出中断程序回到主程序时,将会完成将0x1写到GPIOA_OUT的动作,使得GPIOA_OUT = 0x1,导致原先在中断程序要控制PA.1输出高电平的动作被覆盖,产生操作寄存器的先后问题。
为了避免中断程序和主程序同时操作寄存器的问题,可以在中断程序中设置一个标志,在主程序中判断这个标志再操作寄存器。
产品: | 微控制器 ,8 位 8051 微控制器 ,Arm Cortex-M0 微控制器 ,Arm Cortex-M4 微控制器 |
---|---|
应用: | |
功能: | Peripherals,ARM,Interrupt,I/O,GPIO |