夕口山关 发表于 2023-11-6 21:16:11

STC8G2K64S4芯片的串口2 串口3使用准双向口输出不正常 使用推挽输出时有疑问

STC8G2K64S4芯片的串口2 串口3使用准双向口输出不正常 使用推挽输出时有疑问

夕口山关 发表于 2023-11-6 21:17:35

本帖最后由 夕口山关 于 2023-11-6 21:23 编辑

通道0是串口2 通道1是串口3 串口2的高电平全部只有20ns 串口3高电平全部只有260ns

夕口山关 发表于 2023-11-6 21:22:14

通道0是串口2 通道1是串口3 串口2的高电平全部只有180ns 串口3高电平全部只有20ns

夕口山关 发表于 2023-11-6 21:26:38

本帖最后由 夕口山关 于 2023-11-6 21:28 编辑

通道0是串口2 通道1是串口3 串口2是115200 串口3是9600

根据

      if(GPIO == GPIO_P0)
      {
                if(GPIOx->Mode == GPIO_PullUp)                P0M1 &= ~GPIOx->Pin,      P0M0 &= ~GPIOx->Pin;         //上拉准双向口
                if(GPIOx->Mode == GPIO_HighZ)                        P0M1 |=GPIOx->Pin,      P0M0 &= ~GPIOx->Pin;         //浮空输入
                if(GPIOx->Mode == GPIO_OUT_OD)                P0M1 |=GPIOx->Pin,      P0M0 |=GPIOx->Pin;         //开漏输出
                if(GPIOx->Mode == GPIO_OUT_PP)                P0M1 &= ~GPIOx->Pin,      P0M0 |=GPIOx->Pin;         //推挽输出
      }
使用最下面的
//        P0_MODE_OUT_PP(P00);
//        P1_MODE_OUT_PP(P10);
高电平也是只有很短的时间

这几种方式不是等价的吗 为什么只有用
        GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义
        GPIO_InitStructure.Pin= GPIO_Pin_0 | GPIO_Pin_1;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
        GPIO_InitStructure.Mode = GPIO_OUT_PP;        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
        GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);        //初始化
的方式才能正常使用? 求解

还有串口1可以用准双向口 串口2 和串口3为什么不能用准双向口?

神农鼎 发表于 2023-11-6 23:28:46



求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口,RS232,RS485 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

夕口山关 发表于 2023-11-7 09:20:40

这个是示例代码 用于复现

zhp 发表于 2023-11-7 12:29:57

夕口山关 发表于 2023-11-7 09:20
这个是示例代码 用于复现


从来没有见过这种赋值方式
P30、P31、P10、P11等都是定义的sfr,在这里不能当常数使用
否则最终的赋值必然错误


gentleman 发表于 2023-11-7 12:45:47


寄存器是这么用的






夕口山关 发表于 2023-11-7 14:34:38

zhp 发表于 2023-11-7 12:29
从来没有见过这种赋值方式
P30、P31、P10、P11等都是定义的sfr,在这里不能当常数使用
否则最终的赋值必 ...

我是根据这里这样直接赋值的

zhp 发表于 2023-11-7 15:00:57

夕口山关 发表于 2023-11-7 14:34
我是根据这里这样直接赋值的
GPIOx->Pin的值是每个I/O的bit mask,定义如下


所以范例这样赋值是没问题的
页: [1] 2
查看完整版本: STC8G2K64S4芯片的串口2 串口3使用准双向口输出不正常 使用推挽输出时有疑问