hahahahei 发表于 2023-10-6 16:10:53

HC32F4A0的PB4/PB5管脚做IO口输入引脚,无外外部输入一直是高电平

本帖最后由 hahahahei 于 2023-10-7 09:55 编辑

两个问题:

1.IO口状态有两个位置可读,一是通用输入寄存器PIDRx,二是通用控制寄存器PCRxy的PIN位,用户手册上注明两个寄存器功能一致,实际上从仿真来看是不一致的。我是将IO口配置为COMS输入,使用PCRxy的PIN位读取高低电平的,自己写了函数。库函数读取的状态是PIDRx,与实际输入状态不符。



2.PB3、PB4、PB5做普通IO口输入,外部输入5秒高电平,5秒低电平,PB3状态正常,PB4、PB5一直是高电平(使用PCRxy的PIN位读取高低电平的),无状态变化。这是什么原因造成的




eric2013 发表于 2023-10-6 16:23:03

1这个PCRxy的PIN位是不是相当于STM32的ODR,如果是这个的话,仅可以读取输出时状态,输入还得用IDR。
2这个PB3是不是上电默认复用就是SWO接口,如果是的话,你要看下HC32如何复用其它模式,或者做通用GPIO要设置什么才可以使用。

hahahahei 发表于 2023-10-7 08:52:16

eric2013 发表于 2023-10-6 16:23
1这个PCRxy的PIN位是不是相当于STM32的ODR,如果是这个的话,仅可以读取输出时状态,输入还得用IDR。
2...

能看到我帖子里的图片吗?好像在帖子列表预览时才能看到
1.是和IDR等价的,数据手册上有说明,也观察了与ODR状态不一致
2.初始化管脚之前会关闭SWO功能

eric2013 发表于 2023-10-7 09:22:57

hahahahei 发表于 2023-10-7 08:52
能看到我帖子里的图片吗?好像在帖子列表预览时才能看到
1.是和IDR等价的,数据手册上有说明,也观察了 ...

我们论坛的bug,图片得单独上传,复制粘贴方式会看不到图片。

yangpengya 发表于 2023-10-7 11:18:41

本帖最后由 yangpengya 于 2023-10-7 11:28 编辑

我们也在用hc32f4a0,用的驱动里这个api来关闭JTAGvoid GPIO_SetDebugPort(uint8_t u8DebugPort, en_functional_state_t enNewState);
GPIO_SetDebugPort(GPIO_PIN_TRST | GPIO_PIN_TDO | GPIO_PIN_TDI, DISABLE);

yangpengya 发表于 2023-10-7 11:22:47

f4a0参考手册

hahahahei 发表于 2023-10-7 12:27:21

yangpengya 发表于 2023-10-7 11:18
我们也在用hc32f4a0,用的驱动里这个api来关闭JTAGvoid GPIO_SetDebugPort(uint8_t u8 ...

你的IO输入有没有遇到我问题1这种情况

yangpengya 发表于 2023-10-7 17:09:35

hahahahei 发表于 2023-10-7 12:27
你的IO输入有没有遇到我问题1这种情况

我看了下两个寄存器状态是一致的

benny 发表于 2023-10-8 09:15:30

yangpengya 发表于 2023-10-7 17:09
我看了下两个寄存器状态是一致的

顶你,我也仿真看了下,这两个寄存器的状态是一致的,那就是基本可以证明楼主的代码有问题。
页: [1]
查看完整版本: HC32F4A0的PB4/PB5管脚做IO口输入引脚,无外外部输入一直是高电平