找回密码
 立即注册
楼主: 夕口***

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

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

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-7 15:23:20 | 显示全部楼层
    gentleman 发表于 2023-11-7 12:45
    寄存器是这么用的

    我知道是这样用的 但是我的写法是从GPIO_Inilize()函数里面直接拿出来用的 7.png

    点评

    按你的想法,应该这样写 P0M1 &=~GPIO_Pin_0; P0M0 &=~GPIO_Pin_0;  详情 回复 发表于 2023-11-7 18:37
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-7 15:28:40 | 显示全部楼层
    zhp 发表于 2023-11-7 15:00
    GPIOx->Pin的值是每个I/O的bit mask,定义如下

    那我那样赋值应该没有错吧 但是输出不对 不知道哪里错了

    点评

    zhp
    你这样赋值肯定不对啊,都和你说了 P10、P11、P30、P31这些都是定义的sfr 不能当常数使用 比如:P30定义为 sbit P30 = P3^0; 代码中读取P30,则是读取当前P3.0口的外部的高低电平的状态 怎么可能拿外部的电平状态  详情 回复 发表于 2023-11-7 16:49
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2023-11-7 16:49:01 | 显示全部楼层
    本帖最后由 zhp 于 2023-11-7 16:52 编辑
    夕口山关 发表于 2023-11-7 15:28
    那我那样赋值应该没有错吧 但是输出不对 不知道哪里错了

    你这样赋值肯定不对啊,都和你说了
    P10、P11、P30、P31这些都是定义的sfr
    不能当常数使用

    比如:P30定义为
    sbit P30 = P3^0;
    代码中读取P30,则是读取当前P3.0口的外部的高低电平的状态
    怎么可能拿外部的电平状态来当作常数使用呢

    你这种赋值完全是莫名其妙,能赋值正确才怪

    如果实在不知道怎么配置I/O,就使用下载软件中的
    I/O配置工具来生成配置代码吧

    截图202311071651146196.jpg


    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2142

    积分

    荣誉版主

    积分
    2142
    发表于 2023-11-7 18:37:07 | 显示全部楼层
    夕口山关 发表于 2023-11-7 15:23
    我知道是这样用的 但是我的写法是从GPIO_Inilize()函数里面直接拿出来用的


    按你的想法,应该这样写
    P0M1 &=~GPIO_Pin_0;
    P0M0 &=~GPIO_Pin_0;

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-8 08:38:50 | 显示全部楼层
    gentleman 发表于 2023-11-7 18:37
    按你的想法,应该这样写
    P0M1 &=~GPIO_Pin_0;
    P0M0 &=~GPIO_Pin_0;

    噢噢 懂了
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-8 08:39:26 | 显示全部楼层
    zhp 发表于 2023-11-7 16:49
    你这样赋值肯定不对啊,都和你说了
    P10、P11、P30、P31这些都是定义的sfr
    不能当常数使用

    明白了
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.1]初来乍到

    3

    主题

    17

    回帖

    91

    积分

    注册会员

    积分
    91
     楼主| 发表于 2023-11-8 09:34:04 | 显示全部楼层
    本帖最后由 夕口山关 于 2023-11-8 17:49 编辑
    zhp 发表于 2023-11-7 16:49
    你这样赋值肯定不对啊,都和你说了
    P10、P11、P30、P31这些都是定义的sfr
    不能当常数使用

    用了你的方法 把串口2和3改成准双向口后 串口2和串口3依旧是在发送时 高电平只有很短的20ns(串口2)和280ns(串口3) 是串口2和串口3不能用准双向口模式? 1.png
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 02:16 , Processed in 0.086760 second(s), 58 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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