在这张数据表上,已经算出了常用的波特率值,我们可以拿来直接用。但是如果我们想把波特率的计算做成一个传参函数的方式, 如:USART_INIT(uint_t 16 Baud),在调用时只需要写USART_INIT(9600),USART_INIT(115200),那程序该怎么写呢?
程序的实现 下面介绍的是寄存器版的程序。 程序第二步46行:获得USART_DIV的整数部分; 程序第三步47行:获得USART_DIV的小数部分; 程序第四步48行:将整数部分左移4位,即存入BRR寄存器的后12位; 程序第五步49行:将整数和小数部分合在一起,即前4位和后12位重新组合; 程序第六步50行:将计算出来的数值赋给BRR寄存器。 这样一个将波特率作为形参的函数就完成了。从以上来看的话,波特率的计算好像也不是很难啊。 程序第二步46行:获得USART_DIV的整数部分; 程序第三步47行:获得USART_DIV的小数部分; 程序第四步48行:将整数部分左移4位,即存入BRR寄存器的后12位; 程序第五步49行:将整数和小数部分合在一起,即前4位和后12位重新组合; 程序第六步50行:将计算出来的数值赋给BRR寄存器。 这样一个将波特率作为形参的函数就完成了。从以上来看的话,波特率的计算好像也不是很难啊。
|