USART1的波特率公式:Baud_Rate = Fck/(16*USARTDIV)
USARTDIV = Fck/(16*Baud_Rate)
然后按下述方法计算,例如总线时钟频率为72MHz,配置波特率为9600过程如下:
求得:USARTDIV = 468.75,
因为STM32的波特比率寄存器USART_BRR分为整数部分和小数部分,所以分开计算。
则有,小数部分:DIV_Fraction = 16*0.75 =12
注:这里是将10进制小数转换成16进制的小数所以乘以16**
最接近的整数是:12 = 0x0C
整数部分DIV_Mantissa = 取整 (468.75) = 468= 0x1D4
于是,USART_BRR = 0x1D4C
按此思路设置程序:
void UsartBaud(u32 pclk2,u32 baud)
{
float tmp;
u16 mantissa; // 整数部分
u16 fraction; // 小数部分
temp = (float) (pclk2*1000000)/(baud*16); // 计算得到USARTDIV
mantissa = temp; // 得到整数部分
fraction = (temp-mantissa)*16; // 得到小数部分
// mantissa部分需左移
mantissa = mantissa << 4;
//因为USART_BRR低4位是小数部分
USART1->BRR = mantissa + fraction;
}
设计资源 培训 开发板 精华推荐
- AD9238BCP-20EBZ,用于 AD9238、2 通道、10 位、20 MSPS 模数转换器的评估板
- 使用 Dialog Semiconductor 的 SLG468 的参考设计
- 汽车仪表板指示灯驱动器参考设计
- LT1993-2 的典型应用 - 800MHz 低失真、低噪声差分放大器 ADC 驱动器 (Av = 2V/V)
- ESP32-SOLO-Lite 超小开发板
- RX5808双接收
- LTM8003IY -5Vout 从 5V 到 35Vin 正负转换器的典型应用电路
- 【涂鸦智能】遥控器
- LT6656ACS6-5 的典型应用,用于基本连接的 5V 电压基准
- LT6301 的典型应用 - 采用 28 引脚 TSSOP 封装的双路 500mA、差分 xDSL 线路驱动器
- 用心分享,一起成长!EEWORLD月月有奖优秀主题/回复第28期开始啦~
- 电源情报站 MPS小程序干货推荐,下载有好礼!4月活动开始啦~
- 下载有礼|《ADI 流式细胞分析仪解决方案》
- 有奖直播|MPS 新一代磁角度传感器MA600介绍与应用
- 【免费申请】英飞凌PSoC 62S4 先锋套件 (CY8CKIT-062S4)
- 答题抽奖:Mentor Tessent Automotive相关测试解决方案(奖品池还剩不少奖品哟)
- 有奖活动 | 来PI PowiGaN技术学习中心,解密高可靠性和耐用性氮化镓(GaN)技术
- 阅读并了解是德科技 Power Supply 精彩专题,参与答题赢好礼!
- 下午2点微信群语音答疑:Vicor电源专家答网友的电源设计问题