找回密码
 立即注册
查看: 684|回复: 16

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

[复制链接]
  • TA的每日心情
    难过
    2024-1-2 09:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
    发表于 2023-11-6 21:16:11 | 显示全部楼层 |阅读模式
    STC8G2K64S4芯片的串口2 串口3使用准双向口输出不正常 使用推挽输出时有疑问
    回复 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-2 09:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-6 21:17:35 | 显示全部楼层
    本帖最后由 夕口山关 于 2023-11-6 21:23 编辑

    2.png 1.png 通道0是串口2 通道1是串口3 串口2的高电平全部只有20ns 串口3高电平全部只有260ns
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-2 09:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-6 21:22:14 | 显示全部楼层
    3.png 4.png 通道0是串口2 通道1是串口3 串口2的高电平全部只有180ns 串口3高电平全部只有20ns
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-2 09:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-6 21:26:38 | 显示全部楼层
    本帖最后由 夕口山关 于 2023-11-6 21:28 编辑

    5.png 6.png 通道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为什么不能用准双向口?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2023-11-6 23:28:46 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-2 09:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-7 09:20:40 | 显示全部楼层
    这个是示例代码 用于复现

    demo.zip

    741.98 KB, 下载次数: 25

    示例代码

    点评

    zhp
    从来没有见过这种赋值方式 P30、P31是定义的sfr,在这里不能当常数使用 否则最终的赋值必然错误 [attachimg]26111[/attachimg]  详情 回复 发表于 2023-11-7 12:29
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-11 09:06
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2023-11-7 12:29:57 | 显示全部楼层
    夕口山关 发表于 2023-11-7 09:20
    这个是示例代码 用于复现



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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2142

    积分

    荣誉版主

    积分
    2142
    发表于 2023-11-7 12:45:47 | 显示全部楼层

    寄存器是这么用的

    截图202311071244355718.jpg


    截图202311071245155947.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-2 09:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-7 14:34:38 | 显示全部楼层
    zhp 发表于 2023-11-7 12:29
    从来没有见过这种赋值方式
    P30、P31、P10、P11等都是定义的sfr,在这里不能当常数使用
    否则最终的赋值必 ...

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

    点评

    zhp
    GPIOx->Pin的值是每个I/O的bit mask,定义如下 [attachimg]26137[/attachimg] 所以范例这有赋值是没问题的  详情 回复 发表于 2023-11-7 15:00
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-11 09:06
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2023-11-7 15:00:57 | 显示全部楼层
    夕口山关 发表于 2023-11-7 14:34
    我是根据这里这样直接赋值的

    GPIOx->Pin的值是每个I/O的bit mask,定义如下
    截图202311071500071879.jpg

    所以范例这样赋值是没问题的
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 01:18 , Processed in 0.071259 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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