在线时间58 小时
UID175586
注册时间2010-3-14
NXP金币0
TA的每日心情 | 奋斗 2017-1-17 10:45 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I
高级会员

- 积分
- 780
- 最后登录
- 2023-11-17
|

楼主 |
发表于 2012-3-2 20:09:35
|
显示全部楼层
回复:MQX下串口中断接收再转发的样例程序
自己搞了两个白天一个通宵,用了信号量、消息、事件等等,但都是不行,后来在Freescale的官方论坛上看到了一段参考程序。
经验证,可以正常工作。现贴出自己写的完整的测试任务,供大家参考。
#include "app_inc.h" // 包含APP工程总头文件
void task_uart(uint_32 initial_data)
{
MQX_FILE_PTR fp;
char ch;
printf("TASK UART START.\n");
//fp = fopen("ittyd:", BSP_DEFAULT_IO_CHANNEL);
fp = fopen("ittyf:", (pointer)(IO_SERIAL_XON_XOFF | IO_SERIAL_TRANSLATION));
printf("ITTYF OPENED.\n");
while (TRUE)
{
if(fstatus(fp))
{
ch = fgetc(fp);
fputc(ch, fp); // 从哪个串口接收就从哪个串口回发
printf("%c", ch); // 从默认IO通信接口显示
// 进行帧解析
//...
}else
{
_time_delay(1);
}
}
}
我使用了两个串口:串口3和串口5。
其中,串口3是默认输出串口(printf),串口5是测试输入端口,如果要使用串口3收发,打开“ittyd:”即可。
需要注意的时候,打开串口时,若使用默认的”BSP_DEFAULT_IO_CHANNEL“模式,会打开回显功能,因此建议手动配置打开模式,不打开回显功能(参见代码)。
Tip:
在学习mqx的时候,由于可参考的资料不全,虽然这么个简单的小程序很短,但是自己在琢磨的时候走了很多弯路。
希望研究mqx的前辈们能够指点我们这些mqx新手,另外,建议大家在学习mqx的过程中将心得分享出来,越是基本的问题,就越是需要说清楚。
在学习过程中,多几个伙伴会让自己进步更快。
以此贴,支持安版主的辛勤工作。
  |
|