找回密码
 立即注册
楼主: 小熊熊

串口问题 我在AIcube里面创建了1个串口发现永不了大哥们看看

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1920

回帖

4311

积分

荣誉版主

无情的代码机器

积分
4311
发表于 2025-5-15 11:29:42 | 显示全部楼层

还有你这个B_TX2_Busy 连个类型都没声明噢,居然可以编译通过我也服了。。。。
加了类型声明和volatile关键字汇编里没死循环了
截图202505151126056948.jpg
三天不学习,赶不上刘少奇~
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1920

回帖

4311

积分

荣誉版主

无情的代码机器

积分
4311
发表于 2025-5-15 11:42:12 | 显示全部楼层


不加类型声明,编译器默认是当16位数处理,不过也能执行下去
截图202505151139597427.jpg

截图202505151142049213.jpg
三天不学习,赶不上刘少奇~
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-16 10:35:34
已绑定手机

12

主题

65

回帖

330

积分

中级会员

积分
330
发表于 2025-5-15 11:52:36 | 显示全部楼层
erci*** 发表于 2025-5-15 11:42
不加类型声明,编译器默认是当16位数处理,不过也能执行下去

大哥你的也是AICUBE生成的吗 我的还是不行  用串口波特率计算器里面的可以啊

点评

是AiCube生成的,V6.95N支持打开AiCube工程了,可以对比下差异  详情 回复 发表于 2025-5-15 13:31
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-16 10:35:34
已绑定手机

12

主题

65

回帖

330

积分

中级会员

积分
330
发表于 2025-5-15 12:07:13 | 显示全部楼层
erci*** 发表于 2025-5-15 11:42
不加类型声明,编译器默认是当16位数处理,不过也能执行下去

谢谢大哥了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1920

回帖

4311

积分

荣誉版主

无情的代码机器

积分
4311
发表于 2025-5-15 13:31:12 | 显示全部楼层
小*** 发表于 2025-5-15 11:52
大哥你的也是AICUBE生成的吗 我的还是不行  用串口波特率计算器里面的可以啊 ...


是AiCube生成的,V6.95N支持打开AiCube工程了,可以对比下差异
temp.zip (318.72 KB, 下载次数: 5)
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-16 10:35:34
已绑定手机

12

主题

65

回帖

330

积分

中级会员

积分
330
发表于 2025-5-15 14:16:31 | 显示全部楼层
小*** 发表于 2025-5-15 11:52
大哥你的也是AICUBE生成的吗 我的还是不行  用串口波特率计算器里面的可以啊 ...

大哥能发一个完整程序帮忙看看吗  我看看有什么区别    我的也是那个版本  我都弄了好几天了  因为买了一个串口屏 想玩玩 直接玩自闭了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-16 10:35:34
已绑定手机

12

主题

65

回帖

330

积分

中级会员

积分
330
发表于 2025-5-15 14:17:22 | 显示全部楼层
小*** 发表于 2025-5-15 14:16
大哥能发一个完整程序帮忙看看吗  我看看有什么区别    我的也是那个版本  我都弄了好几天了  因为买了一 ...

谢谢了  刚刚没注意看   
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-16 10:35:34
已绑定手机

12

主题

65

回帖

330

积分

中级会员

积分
330
发表于 2025-5-15 14:18:44 | 显示全部楼层
erci*** 发表于 2025-5-15 13:31
是AiCube生成的,V6.95N支持打开AiCube工程了,可以对比下差异

多谢大哥  下班回去看看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-06-16 10:35:34
已绑定手机

12

主题

65

回帖

330

积分

中级会员

积分
330
发表于 2025-5-15 23:23:47 | 显示全部楼层
erci*** 发表于 2025-5-15 13:31
是AiCube生成的,V6.95N支持打开AiCube工程了,可以对比下差异
  1. //<<AICUBE_USER_HEADER_REMARK_BEGIN>>
  2. ////////////////////////////////////////
  3. // 在此添加用户文件头说明信息
  4. // 文件名称: uart.c
  5. // 文件描述:
  6. // 文件版本: V1.0
  7. // 修改记录:
  8. //   1. (2025-05-13) 创建文件
  9. ////////////////////////////////////////
  10. //<<AICUBE_USER_HEADER_REMARK_END>>
  11. #include "config.h"
  12. #define u8 unsigned char
  13. u8 Rec_Dat[50];                //接收缓冲区
  14. u8 Rec_Num = 0;                //接收计数
  15. volatile u8 B_TX2_Busy = 0;
  16. BOOL fPrintfBusy;
  17. //<<AICUBE_USER_INCLUDE_BEGIN>>
  18. // 在此添加用户头文件包含
  19. //<<AICUBE_USER_INCLUDE_END>>
  20. //<<AICUBE_USER_GLOBAL_DEFINE_BEGIN>>
  21. // 在此添加用户全局变量定义、用户宏定义以及函数声明
  22. //<<AICUBE_USER_GLOBAL_DEFINE_END>>
  23. ////////////////////////////////////////
  24. // 串口2中断服务程序
  25. // 入口参数: 无
  26. // 函数返回: 无
  27. ////////////////////////////////////////
  28. void UART2_ISR(void) interrupt UART2_VECTOR
  29. {
  30.     //<<AICUBE_USER_UART2_ISR_CODE1_BEGIN>>
  31.     // 在此添加中断函数用户代码
  32.     if (UART2_CheckTxFlag())            //判断串口发送中断
  33.     {
  34.         UART2_ClearTxFlag();                 //清除串口发送中断标志
  35.                   fPrintfBusy = 0;     
  36.                 B_TX2_Busy = 0;
  37.     }
  38.     if (UART2_CheckRxFlag())            //判断串口接收中断
  39.     {
  40.         UART2_ClearRxFlag();                 //清除串口接收中断标志
  41.                 Rec_Dat[Rec_Num++] = S2BUF;
  42.     }
  43.     //<<AICUBE_USER_UART2_ISR_CODE1_END>>
  44. }
  45. ////////////////////////////////////////
  46. // 串口2初始化函数
  47. // 入口参数: 无
  48. // 函数返回: 无
  49. ////////////////////////////////////////
  50. void UART2_Init(void)
  51. {
  52.        
  53. #ifdef BAUDRATE
  54. #undef BAUDRATE
  55. #endif
  56. #define BAUDRATE        (9600)
  57. #define T2_RELOAD       (65536 - (SYSCLK / BAUDRATE + 2) / 4)
  58.     UART2_SwitchP4243();                //设置串口数据端口: RxD2 (P4.2), TxD2 (P4.3)
  59. //  UART2_Timer2BRT();                  //串口2固定选择定时器2作为波特率发生器
  60.     TIMER2_TimerMode();                 //设置定时器2为定时模式
  61.     TIMER2_1TMode();                    //设置定时器2为1T模式
  62.     TIMER2_SetPrescale(0);              //设置定时器2的8位预分频
  63.     TIMER2_SetReload16(T2_RELOAD);      //设置定时器2的16位重载值
  64.     TIMER2_Run();                       //定时器2开始运行
  65.     UART2_EnableRx();                   //使能串口2接收数据
  66.     UART2_Mode1();                      //设置串口2为模式1 (8位数据可变波特率)
  67.     UART2_SetIntPriority(0);            //设置中断为最低优先级
  68.     UART2_EnableInt();        //使能串口2中断
  69.             fPrintfBusy = 0;                    //清除发送数据忙标志
  70.     Rec_Num = 0;
  71.         B_TX2_Busy = 0;
  72.     //<<AICUBE_USER_UART2_INITIAL_BEGIN>>
  73.     // 在此添加用户初始化代码
  74.     //<<AICUBE_USER_UART2_INITIAL_END>>
  75. }
  76. char putchar (char dat)                 //将串口2和printf函数绑定
  77. {
  78.     while (fPrintfBusy);
  79.     UART2_SendData(dat);
  80.     fPrintfBusy = 1;
  81.     return dat;
  82. }
  83. void Uart2_SendStr( u8 *puts )                //串口数据发送函数
  84. {
  85.     for (; *puts != 0;  puts++)     //遇到停止符0结束
  86.     {
  87.         S2BUF = *puts;
  88.     B_TX2_Busy = 1;
  89.     while(B_TX2_Busy);
  90.     }       
  91. }
  92. void Usart2_RunTask(void)
  93. {
  94.         if( Rec_Num >= 6 )                //是否接收到了6位以上的数据
  95.         {
  96.                 if(( Rec_Dat[Rec_Num-1] == 0x02 ) && ( Rec_Dat[Rec_Num-2] == 0x02 ) )        //末尾判断
  97.                 {
  98.                         if( ( Rec_Dat[Rec_Num-6] == 0x05 ) && ( Rec_Dat[Rec_Num-5] == 0x04 ) && ( Rec_Dat[Rec_Num-4] == 0x03 ) && ( Rec_Dat[Rec_Num-3] == 0x01 )  )
  99.                         {
  100.                                 P40 = 0;
  101.                                 P00 = 0;
  102.                                 Uart2_SendStr( "打开成功!\r\n" );
  103.                         }
  104.                         else if( ( Rec_Dat[Rec_Num-7] == 0x01) && ( Rec_Dat[Rec_Num-6] == 0x02 ) && ( Rec_Dat[Rec_Num-5] == 0x03 ) && ( Rec_Dat[Rec_Num-4] == 0x04 ) && ( Rec_Dat[Rec_Num-3] == 0x05 )  )
  105.                         {
  106.                                 P40 = 1;
  107.                                 P00 = 1;
  108.                                 Uart2_SendStr( "关闭成功!\r\n" );
  109.                         }
  110.                         Rec_Num = 0;
  111.                 }
  112.         }
  113. }
  114. //<<AICUBE_USER_FUNCTION_IMPLEMENT_BEGIN>>
  115. // 在此添加用户函数实现代码
  116. //<<AICUBE_USER_FUNCTION_IMPLEMENT_END>>
  117. 哈哈一样的代码 你的可以 我的就不行
复制代码

点评

代码一样那就排查别的问题了, 哪一步不行, 之前用过串口没,线接对着没, 用的什么硬件,硬件好着没 串口软件用的哪个,发的报文是hex还是字符串。 等等,信息提供详细点。 再不行就是串口线上逻辑分析仪抓包呗。  详情 回复 发表于 2025-5-16 08:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1920

回帖

4311

积分

荣誉版主

无情的代码机器

积分
4311
发表于 2025-5-16 08:24:20 | 显示全部楼层

代码一样那就排查别的问题了,
哪一步不行,
之前用过串口没,线接对着没,
用的什么硬件,硬件好着没
串口软件用的哪个,发的报文是hex还是字符串。
等等,信息提供详细点。
再不行就是串口线上逻辑分析仪抓包呗。
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 05:34 , Processed in 0.259395 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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