查看: 2994|回复: 2

[MQX] 关于MQX UART 修改波特率后通信出现乱码

[复制链接]

该用户从未签到

6

主题

45

帖子

0

注册会员

Rank: 2

积分
154
最后登录
2021-12-2
发表于 2013-10-16 15:37:15 | 显示全部楼层 |阅读模式
各位使用MQX的朋友,在下使用MQX做UART通信,首先根据硬件情况修改了twrk60n512.h和user_config.h后,采用中断模式,在终端能正常显示输出数据,但是如果将波特率修改为115200以下,则开始输出数据出现乱码,但是后来正常。思考查证了很长时间也找不出来原因。请各位朋友赐教!谢谢了。下面是我的源代码。
void DrvUARTInit(uint_32 baud)
{
    fflush(stdout);
    dev_ptr = (pointer)fopen("ittyd:", BSP_DEFAULT_IO_OPEN_MODE);
       if (dev_ptr == NULL)
    {
        printf("cannot open file: ittyd\n"); 
    }
    else
    {
       printf("\nittyd: Device Handler opened successfully\n");  
       fflush(stdout);
    }
  
    ioctl(dev_ptr,IO_IOCTL_SERIAL_SET_BAUD,&baud);
  }
void DrvUARTSendString(char string[],int len)
{
   write(dev_ptr, (pointer)string, len);
}
 
extern void main_task(uint_32);
TASK_TEMPLATE_STRUCT MQX_template_list[] =
{
   { 10, main_task, 2000, 8, "Main",
      MQX_AUTO_START_TASK, 0, 0},
   { 0,  0,         0,   0, 0,
      0,                   0, 0}
};  
void main_task
   (
      uint_32 initial_data
   )
{
  int length;      
   DrvUARTInit(115200);   //该函数可以修改波特率
   
    length=sizeof(string);
   DrvUARTSendString(string,length);
   printf("\n Type 4 characters into UART3 terminal\n");
      printf("\n Type 4 characters into UART3 terminal\n");
        _task_block();
 }
 
我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-10-16 15:45:03 | 显示全部楼层

    RE:关于MQX UART 修改波特率后通信出现乱码

    如果改为其他的波特率也是乱码吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    45

    帖子

    0

    注册会员

    Rank: 2

    积分
    154
    最后登录
    2021-12-2
     楼主| 发表于 2013-10-16 16:44:03 | 显示全部楼层

    RE:关于MQX UART 修改波特率后通信出现乱码

    波特率为115200正常。低于115200的波特率就会出现部分乱码。另外如果把下面代码的中间一句删除,就正常了,如下面的代码所示
    void DrvUARTInit(uint_32 baud)
    {
         fflush(stdout);

        dev_ptr = (pointer)fopen("ittyd:", BSP_DEFAULT_IO_OPEN_MODE);
            if (dev_ptr == NULL)
        {
             printf("cannot open file: ittyd\n");
         }
        else
         {
            /*printf("\nittyd: Device Handler opened successfully\n"); */ //把这句删除
            fflush(stdout);
         }
       
        ioctl(dev_ptr,IO_IOCTL_SERIAL_SET_BAUD,&baud);
       }
    谢谢安管理员
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-9 21:01 , Processed in 0.100321 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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