OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5109|回复: 3

基于原子的串口实验例程的仿真

[复制链接]

8

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2014-8-3
在线时间
0 小时
发表于 2014-8-17 21:39:05 | 显示全部楼层 |阅读模式

实证明,我必须打印那本700多页的书,慢慢研究,一个个地攻破。串口我不太明白,学习时我先跳过去,先易后难嘛,后来发现空中楼阁,唉,回来再深究,因为串口是我调试中喜欢滥用的武器,必须突破,不可回避就努力克服,任何问题都应该搞懂,不管迟早。


作为新手的我使用原子的程序,逐步调试串口。搞了一个上午,分享快乐!在大家试验的过程中有错误欢迎指出交流,欢迎有其它的讨论。

首先要看懂原子的程序,第一必须理解原子所设的USART_RX_STA是什么,是原子设出来的变量,在程序中(必须自己认真看,虽说我浪费了好多时间在迷茫,都是泪。),它的第七位是用来标志接收完成,这意味着,当USART_RX_STA>0x80才能成功地串口打印,它的第六位是接收到0x0d的标志位,按原子的说法,回车是0x0d 0x0a才表示成功地回车并打印,所以要让USART_RX_STA>0x80,前提是要先要让USART_RX_STA>0x40。其余的第012345位都是用来存数据的多少,(2的六次方为64,所以不能大于64个数据量)

重新整理一下原理:
第一,进入串口中断,
第二,输出一系列要打印的数据
第三,模拟回车,输出“0x0d 0x0a”
打印成功。

逐步模拟仿真的教程(这是我的重点,如何正确设断点,这个好关键,分享给大家少走弯路,这是我多次失败后的成功,这算是一个参考答案。大家按照走一次后,成功了也多试试其它,失败才能获取更多风景,什么意外情况就自己处理吧,总不能说太多其它无关重要的东西。):

先要知道在串口肋手使用十六进制,一步只能串口输出一次。
其次要知道在watch1中可以设置显示变量的值。
还要知道,注意,这是逐步的,不是说你输出一大串数据,你就能慢慢RUN着看仿真。所以要走一步,输出一个,再走一步,看一步。(我用词不专业,大家理解着看吧)


好,开始。
void USART1_IRQHandler(void)中设
if(USART1->SR&(1<<5))  第一个断点
if((USART_RX_STA&0x80)==0)第二个断点
这两个断点,好,
在Watch1显示USART_RX_STA与res,来观察它们
好,仿真,RUN,让程序跑起来
先在串口助手输出一个数据(63,在Watch1中示USART_RX_STA显示为0x00),这会把RXNE置位,进到USART1_IRQHandler中断函数中的第一个断点。(好像这第一个数据会被吞,好像哪里看到过这样的说明,反正我输出这个只能将RXNE置位,而不能成为要打印出来的数据。是不是什么起始位呀什么的,什么停止位呀这些我迟点再研究。)

注意,我们再输出一次63,再RUN,
进到第二个断点res显示0x63'c'
再RUN,返回第一个断点,此时,我们输出0d
RUN res显示0x0d
RUN 返回第一个断点,
(发现USART_RX_STA为0x4?表明收到0d)
再输出0a
RUN res显示0x0a
RUN USART_RX_STA此时已经>0x80,可以显示了!
RUN  好,成功地在串口助手中显示“你所发送的消息:c”
好,其它扩展呀或其它方式大家慢慢试。
今天终于发现,USMART移植不成功的地方了,可能了是因为在USART里是0x80而在那scan里是0x8000, 有可能是这里导致了我移植不成功。第二天,我发现,原来是因为USART.H升级了,所以要想移植成功,则必须把USART也要移过去。。。在那个USART.H有说明升级的内容,我才发现。。。在文件里的Readme也有提及,唉,发现得太迟了。。。。

 

电子技能就是我行走江湖时手中的利剑。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-8-17 22:32:18 | 显示全部楼层
谢谢分享,写的很不错啊.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-8-17
在线时间
0 小时
发表于 2014-8-17 23:52:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥不知道能不能给大家解释解释为什么第一个数据被吞!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-7-27
在线时间
3 小时
发表于 2021-7-27 15:14:03 | 显示全部楼层
如果我要改打印的标志,不是以回车作为打印符号,而是以一个十六进制,16,需要怎么改
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 16:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表