我用的单片机是TMP19A61,用C写的。仿真调试时发现:串口的发送寄存器buf写不了值,而其他寄存器都可以正常设置
我的代码大概步骤是:
1.寄存器地址设置:#define SC0BUF (*(volatile unsigned char *)0xFFFFF700)等等
2.引脚的初始化 (TX,RX引脚初始化)
3.寄存器的初始化(设置波特率,发送使能,除buf以外的寄存器都进行了初始化)
4.查询等待发送buf为空,可以写数据
5.向发送buf写数据,并短暂延时
可是结果是:调试时看到发送buf寄存器的值始终为缺省值,怎么也改变不了。
我尝试了FIFO,non FIFO都不行。
不知道大家有没有出现过寄存器写不了值的情况,麻烦告知下,即使不是串口、不是这个平台下的也好,也请告诉下,谢谢各位了!
------解决方案--------------------------------------------------------
首先需要确认这个地址0xFFFFF700 是否和技术手册一致?
另外有很多寄存器 并非可以读取的,单片机和ARM都有一些寄存器是只读(写任何值,都无实际意义),也有一些是只写, 这需要楼主好好对照对应的技术手册。
另外调试UART,可以借用一些串口调试软件,当然前提是你的单板上接有232的PHY,从而使其能与PC的串口进行连接与通讯。
------解决方案--------------------------------------------------------
有些芯片的UART寄存器的收发BUFFER是同一个地址,写它则是发寄存器,读它则是收寄存器,所以你要根据DATASHEET确定一下这个CPU是否也是同样的设定。如果是这样的话你出现的问题也就正常了。