AFR0 Alternate function remapping option 0(2)
0: AFR0 remapping option inactive: Default alternate functions(1)
1: Port C5 alternate function = TIM2_CH1; port C6 alternate function =
TIM1_CH1; port C7 alternate function = TIM1_CH2.
AFR1 Alternate function remapping option 1 (2)
0: AFR1 remapping option inactive: default alternate function(1)
1: Port A3 alternate function = SPI_NSS; port D2 alternate function =TIM2_CH3.
AFR0 Alternate function remapping option 0(2)
0: AFR0 remapping option inactive: Default alternate functions(1)
1: Port C5 alternate function = TIM2_CH1; port C6 alternate function =TIM1_CH1; port C7 alternate function = TIM1_CH2.
1. Refer to the pinout description.
2. Do not use more than one remapping option in the same port. It is forbidden to enable both AFR1 and
AFR0.
2. PD4 TIM2_CH1没有反应
同样的 PD3 TIM2_CH2则完全正常。
经各种跳坑调试后发现,为了使用 PC7 [TIM1_CH2] 和 PC6 [TIM1_CH1]
所以在option bytes里面启动了 AFR0
数据手册对 AFR0 描述如下:
也就是说 TIM2_CH1也被映射走了,换成 PC5 TIM2_CH1 就完全正常了。
但刚才翻资料看到这句就懵了。
这个暂时还没得到答案!为保险起见,决定不使能AFR1,还是修改电路,把 PD2 [TIM2_CH3] 还是换成PA3 TIM2_CH3。
STM8的乘除法指令是8位的,做16位或以上乘法运算时,编译器实际上调用了一个函数;
而这个函数竟然用到了几个编译器自定义的全局变量;
在进入中断时,这几个全局变量是不会被自动保存的,从而造成这个乘法运算函数不可重入;
当主程序和中断同时使用8位以上乘除法时,自然就出错。
一周热门 更多>