STM32/STM8技术william hill官网
直播中

郑枫

8年用户 55经验值
擅长:嵌入式技术
私信 关注
[问答]

STM8内部晶振切换到外部晶振后,UART1发送数据没反应!!!求大神解答,谢谢!

大神们帮帮忙!为什么stm8换了外部晶振,串口发送数据给单片机就没反应了?而断点调试一直在中断程序中循环。。。(晶振是正常的)


1
2
3

回帖(12)

周大侠

2016-10-28 17:38:30
引用: jpswsz 发表于 2016-10-31 09:09
谢谢你哈,问题我找到了,是编译的时候时钟设成24Mhz了,而我用的是16Mhz的。

恩恩,那你可能用的是20X系列的吧,程序宏定义处改掉就好了,我们以前也是20X系列上的16MHz的晶振。
举报

周大侠

2016-10-28 21:13:39
先试一下我的
  1. void SystemClock_Init(void)
  2. {
  3.   CLK_HSICmd(ENABLE);//启用内部高速时钟
  4.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//配置HSI时钟分频系数为1,16MHZ供给CPU
  5.       /* CLK_HSECmd(ENABLE);                     //外部时钟使能
  6.       CLK_HSICmd(ENABLE);//开启内部高速时钟 16MHz
  7.       CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//时钟分频设置系统时钟16M不分频
  8.       CLK_ClockSwitchCmd(ENABLE);
  9.       CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE); */
  10. }


举报

郑枫

2016-10-29 21:33:57
引用: HARRY007 发表于 2016-10-28 21:13
先试一下我的

内部时钟的话是可以正常收发,就是外部时钟不行
举报

周大侠

2016-10-30 13:59:02
引用: jpswsz 发表于 2016-10-29 21:33
内部时钟的话是可以正常收发,就是外部时钟不行

你的单片机型号是多少?晶振焊接的是多少MHz的?
举报

郑枫

2016-10-31 09:09:42
引用: HARRY007 发表于 2016-10-30 13:59
你的单片机型号是多少?晶振焊接的是多少MHz的?

谢谢你哈,问题我找到了,是编译的时候时钟设成24Mhz了,而我用的是16Mhz的。
举报

小醜

2017-4-10 19:49:01
引用: jpswsz 发表于 2016-10-31 09:09
谢谢你哈,问题我找到了,是编译的时候时钟设成24Mhz了,而我用的是16Mhz的。

楼主你好 我现在也遇到这种问题  请问怎么解决的?表示没有找到楼下说的宏定义
举报

周大侠

2017-4-11 10:36:20
引用: 小醜 发表于 2017-4-10 19:49
楼主你好 我现在也遇到这种问题  请问怎么解决的?表示没有找到楼下说的宏定义

在这个文件里,需要修改这个宏定义首先是你的单片机跑外部晶振默认的是24MHz才有必要去改,例如207系列的就是。如果不改,在串口通信中计算的波特率就不正确了
举报
  • stm8s文件里.jpg

郑枫

2017-8-2 17:37:57
引用: 小醜 发表于 2017-4-10 19:49
楼主你好 我现在也遇到这种问题  请问怎么解决的?表示没有找到楼下说的宏定义

在stm8sXXX.h文件里面
举报

朱静庆

2017-9-30 11:11:58
路过,  学习                                         
举报

任尧

2018-1-2 19:57:00
我也遇到同样的问题,编译时时钟调成24M是什么意思?
举报

郑枫

2018-1-15 08:55:02
引用: shewoqishuiry 发表于 2018-1-2 19:57
我也遇到同样的问题,编译时时钟调成24M是什么意思?

在stm8sXXX.h文件里面,有个时钟的定义,把16000000改为24000000,一般就行了。
举报

ABC

2018-1-18 18:33:29
回复只为赚足金币
举报

更多回帖

发帖
×
20
完善资料,
赚取积分