STC8G2K64S4芯片的串口2 串口3使用准双向口输出不正常 使用推挽输出时有疑问
STC8G2K64S4芯片的串口2 串口3使用准双向口输出不正常 使用推挽输出时有疑问本帖最后由 夕口山关 于 2023-11-6 21:23 编辑
通道0是串口2 通道1是串口3 串口2的高电平全部只有20ns 串口3高电平全部只有260ns
通道0是串口2 通道1是串口3 串口2的高电平全部只有180ns 串口3高电平全部只有20ns
本帖最后由 夕口山关 于 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为什么不能用准双向口?
求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口,RS232,RS485 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
这个是示例代码 用于复现 夕口山关 发表于 2023-11-7 09:20
这个是示例代码 用于复现
从来没有见过这种赋值方式
P30、P31、P10、P11等都是定义的sfr,在这里不能当常数使用
否则最终的赋值必然错误
寄存器是这么用的
zhp 发表于 2023-11-7 12:29
从来没有见过这种赋值方式
P30、P31、P10、P11等都是定义的sfr,在这里不能当常数使用
否则最终的赋值必 ...
我是根据这里这样直接赋值的
夕口山关 发表于 2023-11-7 14:34
我是根据这里这样直接赋值的
GPIOx->Pin的值是每个I/O的bit mask,定义如下
所以范例这样赋值是没问题的
页:
[1]
2