找回密码
 立即注册
楼主: manzunzu

8H/8G/8C/8A系列4组串口同时通信的程序,Modbus 演示程序;可共享T2做波特率发生器

 火.. [复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-06-15 09:34:51
已绑定手机

2

主题

136

回帖

497

积分

中级会员

积分
497
发表于 2024-5-12 21:49:12 | 显示全部楼层
下载,试试
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-5-15 15:25:10 | 显示全部楼层
梁*** 发表于 2022-12-19 13:15
MODBUS协议是软件协议,都差不多的。

梁工,借楼请教一下问题,我现在用usb下载stc32后,在电脑usb口能够正常工作,但是用充电头就不工作,请问我需要怎么处理,开始我怀疑是我板子设计问题,所以我现在使用的屠龙刀也是一样的现象,问题在这里https://www.stcaimcu.com/forum.p ... amp;extra=#pid79025

点评

上电时P3.2要保持高电平。  详情 回复 发表于 2024-5-15 18:01
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2024-5-15 18:01:13 | 显示全部楼层
jw*** 发表于 2024-5-15 15:25
梁工,借楼请教一下问题,我现在用usb下载stc32后,在电脑usb口能够正常工作,但是用充电头就不工作,请 ...

上电时P3.2要保持高电平。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-5-15 20:12:24 | 显示全部楼层
梁*** 发表于 2024-5-15 18:01
上电时P3.2要保持高电平。

梁工,请问我用内部上拉应该也可以吧

点评

一定是外部上拉,你内部上拉那是正常运行程序之后了。  详情 回复 发表于 2024-5-15 20:46
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-5-15 20:22:50 | 显示全部楼层
梁*** 发表于 2024-5-15 18:01
上电时P3.2要保持高电平。

梁工,好了,确实如你所言,谢谢!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2024-5-15 20:46:22 | 显示全部楼层
jw*** 发表于 2024-5-15 20:12
梁工,请问我用内部上拉应该也可以吧

一定是外部上拉,你内部上拉那是正常运行程序之后了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-5-15 21:02:44 | 显示全部楼层
梁*** 发表于 2024-5-15 20:46
一定是外部上拉,你内部上拉那是正常运行程序之后了。

我刚才测试了一下,使用内部上拉cpu也工作了,但是我还有个疑问,上电时我不加上拉,内部也不上拉,端口设置为准双向口,测得P32是4.7V左右,是不是需要在上电的那一瞬间需要P32是高电平,而那个时候cpu没有工作P32还是高阻输入所以电平不定,是这样的吧?

点评

上电时,还没有运行你的用户程序,你的程序做什么操作都无关,因为还没有运行。 上电时,P3.2是高阻,状态不确定,读到可能是高,也可能是低。所以,一定要外接上拉电阻。 USB接充电器时,D+ D-是对地接有电阻的,哟  详情 回复 发表于 2024-5-15 21:13
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-06-16 11:51:06

74

主题

6090

回帖

1万

积分

超级版主

积分
12723
发表于 2024-5-15 21:13:40 | 显示全部楼层
jw*** 发表于 2024-5-15 21:02
我刚才测试了一下,使用内部上拉cpu也工作了,但是我还有个疑问,上电时我不加上拉,内部也不上拉,端口 ...

上电时,还没有运行你的用户程序,你的程序做什么操作都无关,因为还没有运行。
上电时,P3.2是高阻,状态不确定,读到可能是高,也可能是低。所以,一定要外接上拉电阻。
USB接充电器时,D+ D-是对地接有电阻的,哟经下拉动作,如果此时P3.2也是低电平,则MCU自动进入USB下载模式。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-5-15 21:16:04 | 显示全部楼层
梁*** 发表于 2024-5-15 21:13
上电时,还没有运行你的用户程序,你的程序做什么操作都无关,因为还没有运行。
上电时,P3.2是高阻,状 ...

这下明白了,谢谢梁工!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:564
  • 最近打卡:2025-06-16 10:28:17
已绑定手机

50

主题

1816

回帖

3130

积分

论坛元老

积分
3130
发表于 2024-5-16 21:59:36 | 显示全部楼层
梁*** 发表于 2024-5-15 21:13
上电时,还没有运行你的用户程序,你的程序做什么操作都无关,因为还没有运行。
上电时,P3.2是高阻,状 ...

梁工,还得麻烦你下,我现在用试验箱也出现这种问题了,还是插电脑usb能运行,插充电头不能运行
  1. #include "stc32g.h"
  2. #include "stc32_stc8_usb.h"
  3. char *USER_DEVICEDESC = NULL;
  4. char *USER_PRODUCTDESC = NULL;
  5. char *USER_STCISPCMD = "@STCISP#";
  6. void Delay500ms(void)        //@11.0592MHz
  7. {
  8.         unsigned long edata i;
  9.         _nop_();
  10.         _nop_();
  11.         i = 1382398UL;
  12.         while (i) i--;
  13. }
  14. void main()
  15. {
  16.          WTST= 0;
  17.          CKCON= 0;
  18.          EAXFR= 1;       
  19. //    P_SW2 |= 0x80;
  20.    
  21.     P0M1 = 0x00;   P0M0 = 0x00;
  22.     P1M1 = 0x00;   P1M0 = 0x00;
  23.     P2M1 = 0x00;   P2M0 = 0x00;
  24.     P3M1 = 0x00;   P3M0 = 0x00;
  25.     P4M1 = 0x00;   P4M0 = 0x00;
  26.     P5M1 = 0x00;   P5M0 = 0x00;
  27.     P6M1 = 0x00;   P6M0 = 0x00;
  28.     P7M1 = 0x00;   P7M0 = 0x00;
  29.     P3M0 &= ~0x03;
  30.     P3M1 |= 0x03;
  31.     P3PU = 0x04;
  32.     IRC48MCR = 0x80;
  33.     while (!(IRC48MCR & 0x01));
  34.    
  35.     USBCLK = 0x00;
  36.     USBCON = 0x90;
  37.    
  38.     usb_init();                                     //USB CDC 接口配置
  39.                 EUSB=1;
  40. //    IE2 |= 0x80;                                    //使能USB中断
  41.     EA = 1;
  42.    
  43.     while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
  44.                 P40=0;
  45.                 while(1)
  46.                 {
  47.                         Delay500ms();
  48.                         P60=!P60;
  49.                
  50.                 }
  51. //    while (1);
  52. }
  53. /************************************************
  54. 函数功能:USB-CDC串口接收数据的回调函数
  55. 函数描述:回调函数由USB中断在接收到串口数据时自动调用
  56.           回调函数处理完成串口数据后需要返回1
  57. 函数返回:返回1:USB中断服务程序自动完成后续的收尾工作
  58.           返回0:USB会暂停接收串口数据,直到用户自行调用
  59.                  usb_OUT_done()函数后USB才会重新恢复接收数据
  60. 注意事项:当函数返回1时用户无需调用usb_OUT_done()
  61.           只有返回0时才需要调用usb_OUT_done()进行手动收尾
  62.           强烈建议usb_OUT_callback返回1
  63. ************************************************/
  64. BOOL usb_OUT_callback()
  65. {
  66.     USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
  67.    
  68.     return 1;
  69. }
复制代码
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 05:58 , Processed in 0.153083 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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