历史上的今天
返回首页

历史上的今天

今天是:2025年03月08日(星期六)

2020年03月08日 | STM8 固件库编写 使用外部晶振串口通信时,发送是乱码

2020-03-08 来源:eefocus

因为我需要做9600波特率的串口通信,所以外部接的是11.0592MHz的晶振。时钟初始化程序如下:


void Clock_init()  

{  

  CLK_DeInit();  

  CLK_HSECmd(ENABLE);  //启用外部时钟

  while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));  //等待外部时钟启动

  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);  //1分频

  CLK_ClockSwitchCmd(ENABLE);  

  CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,  

                        DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);  

  while(CLK_SOURCE_HSE!=CLK_GetSYSCLKSource());  

}  

然后我的串口初始化是这么写的:


void Uart1_init()

{

  UART1_DeInit();

  UART1_Init((uint32_t)9600,UART1_WORDLENGTH_8D,

             UART1_STOPBITS_1,UART1_PARITY_NO,

             UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);

  UART1_Cmd(ENABLE );

  UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE);

  enableInterrupts();   //中断总使能

}

然后接收到的收据就出现了乱码,我就百度了,有人说需要改宏定义。


我就重新看了下stm8s.h文件,发现了端倪


#if !defined  HSE_Value

 #if defined (STM8S208) || defined (STM8S207) || defined (STM8S007) || defined (STM8AF52Ax) ||

     defined (STM8AF62Ax) || defined (STM8AF622x)

  #define HSE_VALUE ((uint32_t)24000000) /* Value of the External oscillator in Hz*/

 #else

  #define HSE_VALUE ((uint32_t)16000000) /* Value of the External oscillator in Hz*/

 #endif /* STM8S208 || STM8S207 || STM8S007 || STM8AF62Ax || STM8AF52Ax || STM8AF622x */

#endif /* HSE_Value */

竟然是需要自己改动时钟频率。我以为使用固件库之后,能够自动获取时钟频率,并能够根据获得的时钟频率在和那个 UART1_Init()函数中设定的波特率进行计算得到分频值呢!


这里却是需要手动修改晶振频率。当然也可以在编译器中加宏定义来进行修改。


遇到同样问题的朋友,这里注意一下。

推荐阅读

史海拾趣

Burr-Brown公司的发展小趣事

2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。

这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。

AF International公司的发展小趣事

AF International的创立可以追溯到上世纪末,当时创始人张先生凭借对电子行业的敏锐洞察和深厚技术背景,决定创办一家专注于电子元器件研发与生产的公司。张先生深知技术创新是行业发展的关键,因此在公司创立之初就投入大量资源用于研发,逐步开发出了一系列具有竞争力的产品。凭借这些产品,AF International在电子行业中逐渐崭露头角,赢得了客户的信赖和市场的认可。

CET Technology公司的发展小趣事

CET Technology作为电力行业的领军企业,受邀参加了2023年深圳企业创新发展大会。大会上,CET展示了其在电力系统、工业与能源等领域的最新技术成果,包括电力二次智能终端、电能管理专用工业软件等。这些产品与服务均体现了CET在电力技术领域的深厚实力和创新精神。通过参加此次大会,CET不仅与业界同行进行了深入交流,也进一步提升了公司的品牌影响力和市场竞争力。

Dynastream公司的发展小趣事

随着技术的不断进步,Dynastream公司意识到要想在竞争激烈的市场中立足,必须不断创新。因此,公司加大了研发投入,致力于提高产品的性能和稳定性。经过数年的努力,Dynastream成功推出了一款具有革命性意义的产品——一款高精度、低功耗的个人监视传感器。这一产品的推出,不仅让Dynastream在市场上树立了良好的口碑,也为公司未来的发展奠定了坚实的基础。

国炬(GOOGLL)公司的发展小趣事
可能是由于场效应管损坏、电源电压不足或负载阻抗过大等原因引起。解决方法包括更换损坏的场效应管、检查电源电压并适当提高或降低负载阻抗。
Aeroflex公司的发展小趣事
OCL电路能够驱动低阻抗的负载,提高了系统的整体效率。

问答坊 | AI 解惑

ADS调用外部的DLL

ADS中是否可以调用外部的DLL,如果可以调用如何去设置? 哪位高手回复一下.…

查看全部问答>

8051串口接收数据

8051如何从串口接收数据?我有4位数码管,如从串口发送1234,则数码管上显示1234。请给出程序,不会复杂的吧…

查看全部问答>

求MMC卡的specification

哪位大哥有The MultiMediaCard System Specification Version 3.31 有较早的版本的也可以,100分相谢,要是分不够我可以再加!谢谢了! 因为我想要读取一些MMC卡的基本信息。 可以发到我的邮箱:m-ja@163.com…

查看全部问答>

以太网学习的一点心得

前一段时间是针对专门的问题,发了一些帖子,这次在从最基本简单的入手,让我们一起逐步地深入吧。 1.首先我们可以在桌面上创建一个文件夹,my_proj。 2.把StellarisWare下的一些文件夹复制到my_proj下,其中progjects文件夹用来保存我们要创建的 ...…

查看全部问答>

向版主请教:在3.xx固件库中STM32PWM模式的默认电平设置

版主及各位大师好 小弟想请教一下STM32 通用定时器PWM输出时 默认电平控制问题 原来基于1.0的库写的一段TIM2定时器3通道的PWM输出配置 将 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  时开机上电 及软件关闭3 ...…

查看全部问答>

同时获得余数和商

例如 A / B,现在我需要获得 商和余数, C = A / B; D = A % B ; 这样需要两次运算,现在我想利用一次运算得到C和D,各位大虾,请告知,谢谢! 以前用TI的DSP可以直接读取ACC的低16位为商,高16位为余数,请问在STM32的芯片里能实现相同的 ...…

查看全部问答>

ePWM如何配置强制高、强制低?

在2812使用EV的时候可以直接写EVx.ACTRx直接控制PWM输出的强制高、强制低,在使用ePWM的器件上应该怎么配置,从而可以强制高、强制低呢…

查看全部问答>

430单片机抗静电问题

最近做静电放电试验,发现430单片机的REST引脚总是被打坏(一直是低电平),导致单片机不能工作,请问油甚么解决办法没有,怎么能提高单片机得抗静电能力!…

查看全部问答>

上班族的悲惨生活

每天8小时工作、2小时公交或地铁、7小时睡眠;吃着三流的餐饮,呼吸着二流的空气,却承受着各种一流的价格。没时间也没精力互相温存,更没心情没经济去搞文艺。周末放假了,本想到处逛逛感受下帝都的繁华与精彩,早上醒来却发现已过中午,半天已去 ...…

查看全部问答>