OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4989|回复: 8

STM8S003F3调试跳坑记录

[复制链接]

8

主题

1034

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3670
金钱
3670
注册时间
2011-5-23
在线时间
2004 小时
发表于 2016-7-29 13:20:16 | 显示全部楼层 |阅读模式
本帖最后由 aozima 于 2016-7-29 13:27 编辑

1. CLK->PCKENR1 使能 CLK_PCKENR1_UART1 无效
想降低功耗,单独打开 CLK_PCKENR1_UART1,但UART无输出。
核对资料发现:stm8s.h中是这样定义的

STM8S.h.jpg

英文版参考手册上面是这样写的
RM16.jpg

数据手册上面是这样的
DS.jpg
解决方法: 不要使用 stm8s.h中的 CLK_PCKENR1_UART1
自己使能 bit3

RT-Thread RTOS 音频,WIFI,蓝牙
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

1034

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3670
金钱
3670
注册时间
2011-5-23
在线时间
2004 小时
 楼主| 发表于 2016-7-29 13:27:45 | 显示全部楼层
本帖最后由 aozima 于 2016-7-29 13:44 编辑

2. PD4 TIM2_CH1没有反应

同样的 PD3 TIM2_CH2则完全正常。

经各种跳坑调试后发现,为了使用 PC7 [TIM1_CH2] 和 PC6 [TIM1_CH1]
所以在option bytes里面启动了 AFR0

数据手册对 AFR0 描述如下:
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.

也就是说 TIM2_CH1也被映射走了,换成 PC5 TIM2_CH1 就完全正常了。
RT-Thread RTOS 音频,WIFI,蓝牙
回复 支持 反对

使用道具 举报

8

主题

1034

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3670
金钱
3670
注册时间
2011-5-23
在线时间
2004 小时
 楼主| 发表于 2016-7-29 13:49:25 | 显示全部楼层
3. 数据手册中有写 AFR0和AFR1不能同时使用,但他们的IO并不冲突呀?而且我目前就这样用了,而且调试正常。
但刚才翻资料看到这句就懵了。

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.

AFR0_AFR1.jpg

这个暂时还没得到答案!为保险起见,决定不使能AFR1,还是修改电路,把 PD2 [TIM2_CH3] 还是换成PA3 TIM2_CH3。


RT-Thread RTOS 音频,WIFI,蓝牙
回复 支持 反对

使用道具 举报

6

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2014-4-4
在线时间
42 小时
发表于 2016-8-14 11:10:20 | 显示全部楼层
能不能发个PDF 给我 谢谢 !2483787538@qq.com
回复 支持 反对

使用道具 举报

4

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
408
金钱
408
注册时间
2016-1-27
在线时间
63 小时
发表于 2016-8-22 14:27:19 | 显示全部楼层
经验之谈!!
Mob:150 0032 0863
QQ:276204039
回复 支持 反对

使用道具 举报

8

主题

1034

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3670
金钱
3670
注册时间
2011-5-23
在线时间
2004 小时
 楼主| 发表于 2016-8-27 17:31:19 | 显示全部楼层
4. 不要在主程序和中断程序中同时做8bit以上的乘除法运算,会出错

STM8的乘除法指令是8位的,做16位或以上乘法运算时,编译器实际上调用了一个函数;
而这个函数竟然用到了几个编译器自定义的全局变量;
在进入中断时,这几个全局变量是不会被自动保存的,从而造成这个乘法运算函数不可重入;

当主程序和中断同时使用8位以上乘除法时,自然就出错。
RT-Thread RTOS 音频,WIFI,蓝牙
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
326
金钱
326
注册时间
2013-3-17
在线时间
35 小时
发表于 2016-12-22 13:55:54 | 显示全部楼层
感谢分享, 很有意义,
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2109
金钱
2109
注册时间
2011-9-3
在线时间
119 小时
发表于 2016-12-23 14:10:59 | 显示全部楼层
谢谢分享。
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2016-12-23 14:46:48 | 显示全部楼层
很有用的总结
互联网,智能设备爱好者,欢迎讨论任何有意思的想法。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-29 02:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表