打印
[STM8]

遇到一个关于串口2让我抓狂的问题

[复制链接]
1576|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxb1717|  楼主 | 2013-11-8 21:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
现象1:
调试时,打开register串口,发现UART2_DR这个寄存器旁边是"----"这种横杠,好像是这个寄存器不允许操作似的,追踪过UART2_DR地址分配,和数据手册写的一样,应该没有错,但是程序只要一执行到发送数据UART2_DR=data;这里,程序像死掉了一样不执行了,百思不得其解;
现象2:
无法将分频值写到寄存器UART2_BRR2中,比如波特率为9600的话,正常的话应该是执行以下两句,
USART2->BRR2=0x03;//设置波特率9600
USART2->BRR1=0x68;//16M/9600=0x683
但跟踪发现,执行完上面两句后,USART2->BRR2中的值还是0 ,怎么都赋不上值。、
我不知道这两个现象有没有关联性,,哪位大侠能帮忙解释一下,或给个思路么?在此谢过了!
沙发
wookongbun| | 2013-11-8 22:02 | 只看该作者
stm8s.h这个头文件会指定器件的类型,这个对了没

使用特权

评论回复
板凳
香水城主| | 2013-11-8 22:04 | 只看该作者
有些寄存器的读写操作在物理上不是对应相同的寄存器,读出来的内容与写进去的内容是不一样的,DR就是这种寄存器。

你查查手册,BRR寄存器可能也是这种情况。

使用特权

评论回复
地板
zhaoxinzxzx| | 2013-11-8 22:13 | 只看该作者
楼主用的哪颗芯片,是不是压根就没有UART2?还是芯片选错了?

使用特权

评论回复
5
zxb1717|  楼主 | 2013-11-9 08:23 | 只看该作者
wookongbun 发表于 2013-11-8 22:02
stm8s.h这个头文件会指定器件的类型,这个对了没


stm8s.h这个文件里面没有关于UART2_DR的定义,我用的是STM8S105C6,所以在STM8S105C6.h里面有定义;定义如下:
/* UART2 data register */
__IO_REG8    (UART2_DR,    0x5241, __READ_WRITE);

这个地址和数据手册写的一样啊

使用特权

评论回复
6
zxb1717|  楼主 | 2013-11-9 08:24 | 只看该作者
zhaoxinzxzx 发表于 2013-11-8 22:13
楼主用的哪颗芯片,是不是压根就没有UART2?还是芯片选错了?

我用的是STM8S105C6,不知这位兄台用过没有

使用特权

评论回复
7
zxb1717|  楼主 | 2013-11-9 08:28 | 只看该作者
香水城主 发表于 2013-11-8 22:04
有些寄存器的读写操作在物理上不是对应相同的寄存器,读出来的内容与写进去的内容是不一样的,DR就是这种寄 ...

现在不是读出来的内容与写进去的内容是不一样的问题,感觉是DR根本没法操作,请看截图

QQ截图20131109082816.png (1.5 KB )

QQ截图20131109082816.png

使用特权

评论回复
8
香水城主| | 2013-11-9 10:10 | 只看该作者
看截图有什么用?都说了“读出来的内容与写进去的内容是不一样的”,截图只反映了读出来的内容,并不反映写进去的内容。

使用特权

评论回复
9
杨爱林林| | 2013-11-9 13:16 | 只看该作者
重新换个工程  用库函数 写个收发测试
如果还不行 可以从硬件方面考虑

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

231

帖子

1

粉丝