找回密码
 立即注册
查看: 1114|回复: 6

STC32G串口1例程运行不正常

[复制链接]

3

主题

15

回帖

83

积分

注册会员

积分
83
发表于 2023-8-16 19:48:07 | 显示全部楼层 |阅读模式
今天在调试串口打印传感器值时,发现串口打印数据乱码。独立排查后还是出错,最后干脆用STC32G手册中的串口 1 使用定时器 2 做波特率发生器的代码,但是很奇怪还是出错,无法正确打印,请问大家有没有遇到过,是什么问题?用STC8G,8H的例子建立工程没有问题。初步怀疑是不是keil相关设置有问题?
STC32G串口1例程运行不正常-1.png

回复

使用道具 举报 送花

3

主题

15

回帖

83

积分

注册会员

积分
83
发表于 2023-8-16 19:50:07 | 显示全部楼层
  1. #include "stc32g.h" //头文件见下载软件
  2. #include "intrins.h"
  3. #define FOSC 11059200UL //定义为无符号长整型,避免计算溢出
  4. #define BRT (65536 - (FOSC / 115200+2) / 4)
  5. //加 2 操作是为了让 Keil 编译器
  6. //自动实现四舍五入运算
  7. bit busy;
  8. char wptr;
  9. char rptr;
  10. char buffer[16];
  11. void UartIsr() interrupt 4
  12. {
  13. if (TI)
  14. {
  15. TI = 0;
  16. busy = 0;
  17. }
  18. if (RI)
  19. {
  20. RI = 0;
  21. buffer[wptr++] = SBUF;
  22. wptr &= 0x0f;
  23. }
  24. }
  25. void UartInit()
  26. {
  27. SCON = 0x50;
  28. T2L = BRT;
  29. T2H = BRT >> 8;
  30. S1BRT = 1;
  31. T2x12 = 1;
  32. T2R = 1;
  33. wptr = 0x00;
  34. rptr = 0x00;
  35. busy = 0;
  36. }
  37. void UartSend(char dat)
  38. {
  39. while (busy);
  40. busy = 1;
  41. SBUF = dat;
  42. }
  43. void UartSendStr(char *p)
  44. {
  45. while (*p)
  46. {
  47. UartSend(*p++);
  48. }
  49. }
  50. void main()
  51. {
  52. EAXFR = 1; //使能访问 XFR
  53. CKCON = 0x00; //设置外部数据总线速度为最快
  54. WTST = 0x00; //设置程序代码等待参数,
  55. //赋值为 0 可将 CPU 执行程序的速度设置为最快
  56. P0M0 = 0x00;
  57. P0M1 = 0x00;
  58. P1M0 = 0x00;
  59. P1M1 = 0x00;
  60. P2M0 = 0x00;
  61. P2M1 = 0x00;
  62. P3M0 = 0x00;
  63. P3M1 = 0x00;
  64. P4M0 = 0x00;
  65. P4M1 = 0x00;
  66. P5M0 = 0x00;
  67. P5M1 = 0x00;
  68. UartInit();
  69. ES = 1;
  70. EA = 1;
  71. UartSendStr("Uart Test !\r\n");
  72. while (1)
  73. {
  74. if (rptr != wptr)
  75. {
  76. UartSend(buffer[rptr++]);
  77. rptr &= 0x0f;
  78. }
  79. }
  80. }
复制代码
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

83

积分

注册会员

积分
83
发表于 2023-8-16 19:52:25 | 显示全部楼层
如下
9ff60460c73ac2867e67a91ee171eb8.png
84f989446abd9c4fffe8bb08b55a018.png
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2023-8-17 07:01:18 | 显示全部楼层
1.png

2.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-8-17 09:09:04 | 显示全部楼层
官网->软件工具->实验箱
STC32G实验箱例程包里面有完整的项目,烧录其中串口收发测试的例子到芯片里试试。
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

83

积分

注册会员

积分
83
发表于 2023-8-17 09:15:22 | 显示全部楼层

谢谢,我试试看
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

83

积分

注册会员

积分
83
发表于 2023-8-17 09:15:46 | 显示全部楼层
乘风*** 发表于 2023-8-17 09:09
官网->软件工具->实验箱
STC32G实验箱例程包里面有完整的项目,烧录其中串口收发测试的例子到芯片里试试。 ...

谢谢,我试一下
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:17 , Processed in 0.244706 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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