[STM32F4] //执行NEW_CCMR1.OC1FE=1;,OC1FE位还是0?

[复制链接]
2431|5
 楼主| hxdjb 发表于 2018-1-9 14:28 | 显示全部楼层 |阅读模式

//下面是头文件中的内容。
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
  unsigned char CC1S        : 2;
  unsigned char OC1FE       : 1;
  unsigned char OC1PE       : 1;
  unsigned char OC1M        : 3;
  unsigned char OC1CE       : 1;
} __BITS_TIM1_CCMR1;
#endif
__IO_REG8_BIT(TIM1_CCMR1,  0x5258, __READ_WRITE, __BITS_TIM1_CCMR1);

//自己写的程序。
__BITS_TIM1_CCMR1    NEW_CCMR1;
NEW_CCMR1.OC1FE=1;  //执行完这句,OC1FE位还是0;直接操作TIM1_CCMR1=0X04,OC1FE 会变1。

ayb_ice 发表于 2018-1-9 14:40 | 显示全部楼层
会不会是SFR的原因,有些就是写1清零的

要在关中断的情况下测试
 楼主| hxdjb 发表于 2018-1-9 15:31 | 显示全部楼层
ayb_ice 发表于 2018-1-9 14:40
会不会是SFR的原因,有些就是写1清零的

要在关中断的情况下测试

验证过了不是。
ayb_ice 发表于 2018-1-9 16:30 | 显示全部楼层
volatile __BITS_TIM1_CCMR1    NEW_CCMR1;
试试
 楼主| hxdjb 发表于 2018-1-9 16:55 | 显示全部楼层
ayb_ice 发表于 2018-1-9 16:30
volatile __BITS_TIM1_CCMR1    NEW_CCMR1;
试试

还是不行。
ayb_ice 发表于 2018-1-9 17:05 | 显示全部楼层

看看对的反汇编,或看列表文件,那段代码到底被编译成了什么汇编代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

244

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部