您的位置 首页 > 数码极客

115200接收乱码如何设置commtimeouts

最近使用STM8L芯片做项目,有几个地方可以总结下经验以便以后查阅。

一:主频的影响

STM8L有内部RC时钟16M可以调用下面函数初始化系统时钟为内部RC时钟,并可以分频。如下系统时钟是芯片内RC时钟分频2M。

void CLK_Configion(void)

{

CLK_HSICmd(ENABLE); //HSI时钟使能

RCCLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); //HSI为系统时钟

CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_8); //不分频,16M/8=2M

}

主频会影响时钟周期指令周期,它也会影响整个功能模块的运行。如TIME,UART。

TIME:

在STM8L主频是RC分频2M时 发现TIME定时器最小触发周期是100us左右,寄存器设置成<100us触发无效,它依然是100us左右周期触发,只有设置成>100us触发,实际触发才会和寄存器设置的值一样。

这个应该是主频2M时,最快的响应速度了。响应周期<100us主频最好设置成16M。

UART

在STM8L主频和UART波特率不匹配,应会影响数据发送,出现乱码。比如2M时 波特率9600比较稳定,波特率115200会比较迟钝这个还比较好理解时钟慢,响应不过来。16M时115200比较稳定,9600有时会出现乱码,这个不知道为什么可能由于内部芯片时序原因。总的来说2M主频9600波特率比较稳定。115200波特率尽量用16M。

虽然它们的时钟通过RC时钟分频后都相对独立,但是系统时钟影响指令周期也会对其它功能模块有影响,这里需要注意。

RTC

主频对RTC计时没什么影响,因为RTC使用内部另一个38K低功耗时钟源。

内部参考电压1.21V

STM8L的内部参考电压1.21V不是用来给AD采样的基准电压,而是内部输出1.21V的参考电压。芯片内部AD采样的基准电压时钟始终是电源电压VCC。

参考电压1.21V可以采样出AD值 AD_1.2。它可以有两个作用:

8位分辨率为例。

反推出电源电压VCC。

VCC换算公式

经过换算可以得出以1.21V为基准电压的AD外部采样值。每次采样要采样两个AD值 一个是内部的1.21V值AD_1.2,一个是外部电压的AD采样值AD_in。

以1.21V为基准电压,换算出外部电压的采样值为AD_new。它们之间存在以下等式:

AD_new换算公式

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“115200接收乱码如何设置commtimeouts”边界阅读