找回密码
 立即注册
查看: 261|回复: 3

你们的32G会因串口而复位么【已解决】

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-03 11:12:39
已绑定手机

2

主题

4

回帖

44

积分

新手上路

积分
44
发表于 2024-11-28 20:34:01 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 zyk12345 于 2024-11-30 16:48 编辑

在测试串口数据是发现MCU自动复位

换了根数据线好了!!!!!!!!!!!!!!!!!!

接受缓冲区是1024,但这才120+就会复位
低于120个字符,则正常。

1024120+
120

定时器
  1. #include "Timer.h"
  2. #include "Led.h"
  3. #include "Usart1.h"
  4. void Timer_Init()
  5. {
  6.     TMOD = 0x00;
  7.     TL0 = (65536-50000)%256;               
  8.     TH0 = (65536-50000)/256;                    
  9.     TR0 = 1;
  10.     ET0 = 1;
  11.     EA = 1;
  12.     T0x12=0;
  13. }
  14. void Timer0() interrupt 1
  15. {   
  16.     if(Usart1_IsRecv>1)
  17.     {
  18.         Usart1_IsRecv-=1;
  19.         if(Usart1_IsRecv==1)
  20.         {
  21.         Usart1_IsRecv=0;
  22.         Usart1_data.IsEnd=1;
  23.         }        
  24.     }
  25. }
复制代码



串口1实现
  1. #include "Usart1.h"
  2. #include "intrins.h"
  3. USART1_Data Usart1_data;
  4. bit busy;
  5. int Usart1_IsRecv=0;
  6. unsigned int wptr;
  7. unsigned int rptr;
  8. void Usart1_Init()
  9. {
  10.     P3M0 = 0x00;
  11.     P3M1 = 0x00;
  12.     SCON = 0x50;
  13.     T2L = BRT;
  14.     T2H = BRT>>8;
  15.     S1BRT = 1;
  16.     T2x12 = 1;
  17.     T2R = 1;
  18.     wptr = 0x00;
  19.     rptr = 0x00;
  20.     busy=0;
  21.     ES =1;
  22.     EA =1;
  23. }
  24. void Usart1_ClearData(void)
  25. {
  26.     Usart1_IsRecv=0;
  27.     for(rptr=0;rptr<BUFFSIZE;rptr++)
  28.     {
  29.         Usart1_data.Buffer[rptr]=0;
  30.     }
  31.     wptr=0;
  32.     Usart1_data.IsEnd=0;
  33. }
  34. void Usart1_Send(char dat)
  35. {
  36.     while(busy);
  37.     busy=1;
  38.     SBUF = dat;
  39. }
  40. void Usart1_SendChars(char *str)
  41. {
  42.     while(*str)
  43.     {
  44.         Usart1_Send(*str++);
  45.     }
  46. }
  47. void Usart1_Isr() interrupt 4
  48. {
  49.     Usart1_IsRecv++;
  50.     Usart1_data.IsEnd=0;
  51.     if(TI)
  52.     {
  53.         TI=0;
  54.         busy=0;
  55.     }
  56.     if(RI)
  57.     {
  58.         RI=0;
  59.         
  60.         Usart1_data.Buffer[wptr] = SBUF;
  61.         wptr++;
  62.         if(wptr>BUFFSIZE)
  63.         {
  64.             wptr=0;
  65.         }
  66.     }
  67. }
复制代码



main函数
  1. #include <STC32G.H>
  2. #include "intrins.h"
  3. #include "Led.h"
  4. #include "Delay.h"
  5. #include "Timer.h"
  6. #include "Usart1.h"
  7. #include <stdio.h>
  8. #include <string.h>
  9. char Data[100];
  10. int c=0;
  11. int main()
  12. {
  13.     EAXFR = 1;
  14.     CKCON = 0x00;
  15.     WTST = 0x00;
  16.     Usart1_Init();
  17.     Timer_Init();
  18.     Usart1_SendChars("Timer-USART1 Test!\r\n");
  19.     while(1)
  20.     {        
  21.         if(Usart1_data.IsEnd)
  22.         {
  23.             if(strcmp(Usart1_data.Buffer,"LEDON")==0)
  24.             {
  25.                 Led_On(Led_1);
  26.                 Usart1_SendChars("Led On!\r\n");
  27.                 Usart1_ClearData();
  28.             }
  29.             else if(strcmp(Usart1_data.Buffer,"LEDOFF")==0)
  30.             {
  31.                 Led_Off(Led_1);
  32.                 Usart1_SendChars("Led Off!\r\n");
  33.                 Usart1_ClearData();
  34.             }
  35.             else
  36.             {
  37.                 sprintf(Data,"STC32G12K128:%s\r\n",Usart1_data.Buffer);
  38.                 Usart1_SendChars(Data);
  39.                 Usart1_ClearData();
  40.             }            
  41.         }
  42.     }
  43.     return 0;
  44. }
复制代码
STC32G12K128(1).png
回复

使用道具 举报 送花

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

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2024-11-28 21:07:38 | 显示全部楼层
用户程序区问题,收对,收错,溢出,
MCU是不知到的,是你用户程序知到,是你用户程序的反应
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2025-05-02 08:15:40
已绑定手机

13

主题

1257

回帖

2975

积分

金牌会员

积分
2975
发表于 2024-11-28 21:25:41 | 显示全部楼层
代码贴出来,让大家看看是用户程序哪里出问题了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 10:59:33

25

主题

1154

回帖

2391

积分

超级版主

积分
2391
发表于 2024-11-28 21:45:33 | 显示全部楼层
本帖最后由 AI-32位8051 于 2024-11-28 21:46 编辑

1:加几个NOP试试?
2:参考【新提醒】单片机运行时自动复位 | 已解决,程序问题 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区  https://www.stcaimcu.com/forum.p ... mp;extra=#pid102096
STC官网:https://www.stcai.com/
QQ:2593903262
微信号:18106296598
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 21:50 , Processed in 0.113327 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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