先讲下需要用到的知识 :带小数的进制转换
波特率值=(PCLK1或者PCLK2)/(16*预分频系数:USARTDIV)
但是USARTDIV分为整数部分和小数部分,因此要分别写他们的值到波特率寄存器,整数部分(十进制)直接换成16进制写入,
对于小数部分,要按照小数部分进制转换的方法转换后写入:
小数部分(十进制)的值*16然后取一个最接近的整数后写入小数部分寄存器。
PCLK2适用于USART1 ,PCLK2用于USART2,3,4,5
见下图 波特比率寄存器(USART_BRR)(高16位保留不可用,下面是低16位)
里面有 DIV_Mantissa[11:0]:USARTDIV的整数部分
和 DIV_Fraction[3:0]:USARTDIV的小数部分
用户377235 2012-5-2 23:44
坑爹呀,那有什么16进制,楼主连最基本的数据存储原理都不懂呀,寄存器里面只能存01序列,哪有什么十六进制。公式里面除十六是因为要把整数向高位移4位,后面的乘以16是因为之前除了16!