串口初始化中U0DLL=Fdiv%256怎样理解(待解决)
2012-09-22 15:40
253 查看
串口初始化程序如下所示:
1#define UART_BPS 115200 //串口通信波特率
2U0LCR=0x83; //DLAB=1,允许设置波特率
3Fdiv=(Fpclk/16)/UART_BPS; //设置波特率
4U0DLM=Fdiv/256; //除数的高8位
5U0DLL=Fdiv%256; //除数的低8位
6U0LCR=0x03; //DLAB=0,禁止访问除数锁存器
波特率除数计算公式,其中,baud为所需要的波特率:
UxDLM,UxDLL=Fpclk/(16*baud)
U0DLL和U0DLM寄存器一起构成一个16位除数,U0DLL包含除数的低8位,U0DLM包含除数的高8位
第4句U0DLM=Fdiv/256可以看成Fdiv>>8位,右移8位就相当于除以256
第5句U0DLL=Fdiv%256是怎么一回事呢?等同于二进制的什么呢?
1#define UART_BPS 115200 //串口通信波特率
2U0LCR=0x83; //DLAB=1,允许设置波特率
3Fdiv=(Fpclk/16)/UART_BPS; //设置波特率
4U0DLM=Fdiv/256; //除数的高8位
5U0DLL=Fdiv%256; //除数的低8位
6U0LCR=0x03; //DLAB=0,禁止访问除数锁存器
波特率除数计算公式,其中,baud为所需要的波特率:
UxDLM,UxDLL=Fpclk/(16*baud)
U0DLL和U0DLM寄存器一起构成一个16位除数,U0DLL包含除数的低8位,U0DLM包含除数的高8位
第4句U0DLM=Fdiv/256可以看成Fdiv>>8位,右移8位就相当于除以256
第5句U0DLL=Fdiv%256是怎么一回事呢?等同于二进制的什么呢?
相关文章推荐
- 【AT91SAM3S】英倍特串口示例工程05-UART中,串口是怎样初始化的
- 怎样正确的理解和解决 ORA-01843:not a valid month
- 怎样解决无法初始化Visual Basic环境的问题
- 怎样解决数据库 Navicat 8for MySQL中不能连接到本地数据库的问题啊??请大虾们帮忙
- 解决TI cc2538串口无法烧写,bootloader出错
- 串口初始化捉虫记
- Linux下串口ttyS2,ttyS3不能用的问题解决办法
- 【解决】在 IPMONTR.DLL 中初始化函数 INITHELPERDLL 启动失败,错误代码为 10107
- 《Java程序员面试笔试宝典》之Java程序初始化的顺序是怎样的
- ReportingServices报表服务部署时提示未初始化报表服务器安装的解决办法
- XP不能初始化socket接口,无法上网的解决办法
- 怎样将整型变量转换为字符变量 然后串口 或者LCD发送出来(STM32) 以及sprintf的用法
- 怎样理解python中的GIL?
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。问题的解决方法!
- webuploader若容器不可见(hidden),则初始化会失败,造成上传不可用的解决办法
- 怎样理解阻塞非阻塞与同步异步的区别?
- 全局变量相互依赖和初始化顺序的解决办法
- struts初始化配置问题--未完全解决
- 运用波利亚的怎样解题表来解决事件绑定问题
- Ubuntu 14.04 LTS中怎样解决系统设置残缺的问题