首页 > 编程知识 正文

单片机串口波特率设置,如何计算stm32串口的波特率

时间:2023-05-03 21:36:48 阅读:136175 作者:4343

在模式0和模式2下,串行端口的波特率是固定的,模式0为Fosc/12。 模式2由Fosc/32或Fosc/64,具体取决于PCON寄存器的SMOD位。

在模式1和模式3中,波特率是可变的,波特率可以由计时器1生成。 8052可以由计时器2生成。 那么,波特率是多少? 波特率由计时器1的溢出率决定。

baudrate=(2smod/32 ) * ) *(Timer 1 Overflow Rate ) )。

注: 2SMOD此处的SMOD是指数,SMOD是波特率两倍的波特率位,该位位于PCON寄存器中。

使用timer 1作为波特率发生器时,通常需要将timer 1设置为8位自动重载操作模式,同时禁止中断timer 1,如何计算timer 1的溢出率? 如果石英振荡频率为12MHz,TH1的值为0xFE,则溢出率或溢出频率在2个时钟溢出,如果溢出周期为2us,则溢出频率为500KHz。 根据计时器一节,定时时间有以下计算公式。

定时=(最大计数值-计数器初始值)机器周期=) (最大计数值-计数器初始值) ) 12/晶振频率(Hz ) ) s )=(256-TH1 ) ) 12/OSC_freq

溢出频率如下所示

OSC_freq(Hz )/) 256-th1 ) *12 )。

所以,最后提出波特率的是:

(2smod/32(* ) OSC _ freq (Hz )/) ) 256-th1 ) *12 )。

有了波特率的计算公式,当然可以从波特率导出TH1的初始值:

baud_rate=(2smod/32(* ) OSC_freq ) Hz )/) ) 256-th1 ) *12 ) )

32*12*(256-th1 ) ) 2smod*OSC_freq ) Hz ) )/BAUD_RATE

256-th1=(2smod*OSC_Freq ) Hz ) )/()/(BAUD_RATE*32*12 ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

th1=256-(2smod*OSC_Freq(Hz ) )/()/(BAUD_RATE*32*12 ) ) ) ) ) ) ) ) )。)

如果石英振动频率为11.0592MHz,波特率为9600,SMOD=0,TH1的初始值是多少呢? 可以根据上式计算TH1=256-11059200/(9600*32*12 )=0xFD。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。