打印
[AVR单片机]

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

[复制链接]
1420|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mars.CN|  楼主 | 2013-6-13 12:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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里面本来就有这个串口的驱动吧,所以把波特率给改了

系统应该不会有吧  估计还是他底层的问题

使用特权

评论回复
5
huangxz| | 2013-6-13 13:05 | 只看该作者
qin552011373 发表于 2013-6-13 13:00
系统应该不会有吧  估计还是他底层的问题

ucos启动的时候,一般都有bsp_init的过程,有时候os_start 启动的第一个任务里面也会有初始化,
写程序的随意性太大了,不是自己写的程序,还是在使用的时候好好看看别人的代码。

使用特权

评论回复
6
Mars.CN|  楼主 | 2013-6-13 13:28 | 只看该作者
huangxz 发表于 2013-6-13 13:05
ucos启动的时候,一般都有bsp_init的过程,有时候os_start 启动的第一个任务里面也会有初始化,
写程序的随 ...

求教,这个应该怎么改?μC/OS整本书都翻遍了,没有关于串口方面的讲解,源代码里也没有

使用特权

评论回复
7
huangxz| | 2013-6-13 14:10 | 只看该作者
Mars.CN 发表于 2013-6-13 13:28
求教,这个应该怎么改?μC/OS整本书都翻遍了,没有关于串口方面的讲解,源代码里也没有 ...

串口设置方面跟无系统的差异不大,如果没有,那你怎么会有输出?

使用特权

评论回复
8
Mars.CN|  楼主 | 2013-6-13 14:17 | 只看该作者
huangxz 发表于 2013-6-13 14:10
串口设置方面跟无系统的差异不大,如果没有,那你怎么会有输出?

关键就是,裸奔的时候没有问题,收发基本正常(发可能有点小瑕疵,不知道什么原因)
但是进入ucos后就SB了,收发都不正常了,跟波特率搞乱了一个德行,要么收到的都是00,要么就是乱码

使用特权

评论回复
9
huangxz| | 2013-6-13 14:22 | 只看该作者
Mars.CN 发表于 2013-6-13 14:17
关键就是,裸奔的时候没有问题,收发基本正常(发可能有点小瑕疵,不知道什么原因)
但是进入ucos后就SB ...

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

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!
10
Mars.CN|  楼主 | 2013-6-13 14:50 | 只看该作者
huangxz 发表于 2013-6-13 14:22
就是进了系统以后被改了串口设置了,找一找,肯定有的。

我在想是不是ucos频繁开关中断的原因。进入系统后没有看到哪里设置串口的

使用特权

评论回复
11
huangxz| | 2013-6-13 15:15 | 只看该作者
Mars.CN 发表于 2013-6-13 14:50
我在想是不是ucos频繁开关中断的原因。进入系统后没有看到哪里设置串口的 ...

那你可以仿真一下,看看在串口发送之前的寄存器值有没有问题

使用特权

评论回复
12
Mars.CN|  楼主 | 2013-6-13 15:38 | 只看该作者
huangxz 发表于 2013-6-13 15:15
那你可以仿真一下,看看在串口发送之前的寄存器值有没有问题

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

这样写的,竟然也会有问题,期间根本没有任何代码参与
这时候系统还没启动,所以不会切换进程
为毛???

使用特权

评论回复
13
Mars.CN|  楼主 | 2013-6-13 15:45 | 只看该作者
唯一让我怀疑的就是winavr的头文件了,<avr/io.h>
winavr这个头文件在哪?

使用特权

评论回复
14
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不会影响你的

使用特权

评论回复
15
Mars.CN|  楼主 | 2013-6-13 16:22 | 只看该作者
huangxz 发表于 2013-6-13 16:19
你在Usart_Print("hello!")后面加一个while(1);
这样就可以看到你的代码对不对了

熔丝位写错了,有办法搞回来不?:'(

使用特权

评论回复
16
huangxz| | 2013-6-13 16:24 | 只看该作者
Mars.CN 发表于 2013-6-13 16:22
熔丝位写错了,有办法搞回来不?

:L,烧录工具可以改啊

使用特权

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

本版积分规则

9

主题

43

帖子

0

粉丝