[AVR单片机] 单独测试的串口没有问题,放到μC/OS上就出问题了,遇到过没?

[复制链接]
1912|15
 楼主| Mars.CN 发表于 2013-6-13 12:04 | 显示全部楼层 |阅读模式
单独写的串口程序没有任何问题,收发正常,但是加到μC/OS上又出现了波特率不同步的问题
是什么原因造成的?
huangxz 发表于 2013-6-13 12:20 | 显示全部楼层
ucos里面本来就有这个串口的驱动吧,所以把波特率给改了
mmuuss586 发表于 2013-6-13 12:43 | 显示全部楼层
应该程序哪里有BUG吧。
qin552011373 发表于 2013-6-13 13:00 | 显示全部楼层
huangxz 发表于 2013-6-13 12:20
ucos里面本来就有这个串口的驱动吧,所以把波特率给改了

系统应该不会有吧  估计还是他底层的问题
huangxz 发表于 2013-6-13 13:05 | 显示全部楼层
qin552011373 发表于 2013-6-13 13:00
系统应该不会有吧  估计还是他底层的问题

ucos启动的时候,一般都有bsp_init的过程,有时候os_start 启动的第一个任务里面也会有初始化,
写程序的随意性太大了,不是自己写的程序,还是在使用的时候好好看看别人的代码。
 楼主| Mars.CN 发表于 2013-6-13 13:28 | 显示全部楼层
huangxz 发表于 2013-6-13 13:05
ucos启动的时候,一般都有bsp_init的过程,有时候os_start 启动的第一个任务里面也会有初始化,
写程序的随 ...

求教,这个应该怎么改?μC/OS整本书都翻遍了,没有关于串口方面的讲解,源代码里也没有
huangxz 发表于 2013-6-13 14:10 | 显示全部楼层
Mars.CN 发表于 2013-6-13 13:28
求教,这个应该怎么改?μC/OS整本书都翻遍了,没有关于串口方面的讲解,源代码里也没有 ...

串口设置方面跟无系统的差异不大,如果没有,那你怎么会有输出?
 楼主| Mars.CN 发表于 2013-6-13 14:17 | 显示全部楼层
huangxz 发表于 2013-6-13 14:10
串口设置方面跟无系统的差异不大,如果没有,那你怎么会有输出?

关键就是,裸奔的时候没有问题,收发基本正常(发可能有点小瑕疵,不知道什么原因)
但是进入ucos后就SB了,收发都不正常了,跟波特率搞乱了一个德行,要么收到的都是00,要么就是乱码
huangxz 发表于 2013-6-13 14:22 | 显示全部楼层
Mars.CN 发表于 2013-6-13 14:17
关键就是,裸奔的时候没有问题,收发基本正常(发可能有点小瑕疵,不知道什么原因)
但是进入ucos后就SB ...

就是进了系统以后被改了串口设置了,找一找,肯定有的。

评分

参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!

查看全部评分

 楼主| Mars.CN 发表于 2013-6-13 14:50 | 显示全部楼层
huangxz 发表于 2013-6-13 14:22
就是进了系统以后被改了串口设置了,找一找,肯定有的。

我在想是不是ucos频繁开关中断的原因。进入系统后没有看到哪里设置串口的
huangxz 发表于 2013-6-13 15:15 | 显示全部楼层
Mars.CN 发表于 2013-6-13 14:50
我在想是不是ucos频繁开关中断的原因。进入系统后没有看到哪里设置串口的 ...

那你可以仿真一下,看看在串口发送之前的寄存器值有没有问题
 楼主| Mars.CN 发表于 2013-6-13 15:38 | 显示全部楼层
huangxz 发表于 2013-6-13 15:15
那你可以仿真一下,看看在串口发送之前的寄存器值有没有问题

……木有仿真器
Usart_Init();       
Usart_Print("Hello!");

这样写的,竟然也会有问题,期间根本没有任何代码参与
这时候系统还没启动,所以不会切换进程
为毛???
 楼主| Mars.CN 发表于 2013-6-13 15:45 | 显示全部楼层
唯一让我怀疑的就是winavr的头文件了,<avr/io.h>
winavr这个头文件在哪?
huangxz 发表于 2013-6-13 16:19 | 显示全部楼层
Mars.CN 发表于 2013-6-13 15:38
……木有仿真器
Usart_Init();       
Usart_Print("Hello!");

你在Usart_Print("hello!")后面加一个while(1);
这样就可以看到你的代码对不对了

io.h不会影响你的
 楼主| Mars.CN 发表于 2013-6-13 16:22 | 显示全部楼层
huangxz 发表于 2013-6-13 16:19
你在Usart_Print("hello!")后面加一个while(1);
这样就可以看到你的代码对不对了

熔丝位写错了,有办法搞回来不?:'(
huangxz 发表于 2013-6-13 16:24 | 显示全部楼层
Mars.CN 发表于 2013-6-13 16:22
熔丝位写错了,有办法搞回来不?

:L,烧录工具可以改啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

43

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部