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

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-07-12 18:14:20

3

主题

18

回帖

111

积分

注册会员

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-07-12 18:14:20

3

主题

18

回帖

111

积分

注册会员

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:57
  • 最近打卡:2025-06-16 09:23:00

26

主题

1037

回帖

3946

积分

超级版主

积分
3946
发表于 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


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

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


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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-07-12 18:14:20

3

主题

18

回帖

111

积分

注册会员

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

噢噢 懂了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-07-12 18:14:20

3

主题

18

回帖

111

积分

注册会员

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

明白了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-07-12 18:14:20

3

主题

18

回帖

111

积分

注册会员

积分
111
发表于 2023-11-8 09:34:04 | 显示全部楼层
本帖最后由 夕口山关 于 2023-11-8 17:49 编辑
zh*** 发表于 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, 2025-6-17 03:43 , Processed in 0.170962 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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