程实践中要求设置串口1的波特率为9600bps,当PCLK2的时钟为36MHz时,填入USART1
1个回答
关注
展开全部
串口的波特率计算公式为:波特率 = 时钟频率 / (分频系数 × (1 + USARTDIV))其中,分频系数是BRR寄存器的值,USARTDIV是BRR寄存器的小数部分。对于PCLK2时钟频率为36MHz的情况,要设置串口1的波特率为9600bps,可以按照以下步骤进行计算:计算分频系数:分频系数 = 时钟频率 / (波特率 × 16) = 36MHz / (9600bps × 16) = 234.375将分频系数取整,并将结果填入USART_BRR寄存器:BRR寄存器的高位和低位分别表示分频系数的整数部分和小数部分。因为234.375无法精确表示为整数和分数的形式,所以需要通过近似计算将其转化为分数形式,例如:234.375 ≈ 234 + 3/8 = 234 + 0.375因此,BRR寄存器的值应该为:BRR = 234 << 4 | (uint8_t)(0.375 * 16 + 0.5) = 0xEA其中,
咨询记录 · 回答于2023-03-18
程实践中要求设置串口1的波特率为9600bps,当PCLK2的时钟为36MHz时,填入USART1
串口的波特率计算公式为:波特率 = 时钟频率 / (分频系数 × (1 + USARTDIV))其中,分频系数是BRR寄存器的值,USARTDIV是BRR寄存器的小数部分。对于PCLK2时钟频率为36MHz的情况,要设置串口1的波特率为9600bps,可以按照以下步骤进行计算:计算分频系数:分频系数 = 时钟频率 / (波特率 × 16) = 36MHz / (9600bps × 16) = 234.375将分频系数取整,并将结果填入USART_BRR寄存器:BRR寄存器的高位和低位分别表示分频系数的整数部分和小数部分。因为234.375无法精确表示为整数和分数的形式,所以需要通过近似计算将其转化为分数形式,例如:234.375 ≈ 234 + 3/8 = 234 + 0.375因此,BRR寄存器的值应该为:BRR = 234 << 4 | (uint8_t)(0.375 * 16 + 0.5) = 0xEA其中,
程实践中要求设置串口1的波特率为9600bps,当PCLK2的时钟为36MHz时,填入USART1->BRR寄存器的值为(用16进制表示)?
根据串口通信的公式:波特率 = 串口时钟频率 / (分频系数 × (1 + 小数分频)),可以得到分频系数× ( 1+ 小数分频) = 375而USART1的BRR寄存器的值,是将波特率的计算结果拆分成整数部分和小数部分进行配置,其结构为:USART_BRR = 整数部分 < 4 | 小数部分 & 0x0F因此,要求USART1的波特率为9600bps,在PCLK2时钟为36MHz时,我们需要先求出分频系数和小数分频,然后将它们转换成整数部分和小数部分,最后填入BRR寄存器即可。计算过程如下:分频系数 = 36MHz / (9600bps × 16) = 234.375由于USART_BRR需要把波特率分成整数和小数两部分,我们需要将234.375分成整数部分和小数部分。整数部分 = 234小数部分 = 0.375 × 16 = 6因此,填入USART1->BRR寄存器的值为:USART1->BRR = (0xEA6)其中,0xEA6是整数部分为234,小数部分为6的结果,以16进制表示。
已赞过
评论
收起
你对这个回答的评价是?