找回密码
 立即注册
查看: 550|回复: 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
回复 送花

使用道具 举报

该用户从未签到

551

主题

9428

回帖

1万

积分

管理员

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

2.png

回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:53
  • 签到天数: 140 天

    [LV.7]常住居民III

    26

    主题

    1337

    回帖

    4159

    积分

    论坛元老

    积分
    4159
    发表于 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, 2024-5-15 03:06 , Processed in 0.065972 second(s), 56 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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