关于CH582M 的GPIO PORTB , PIN8 和 PIN17 用作输入的问题

在最新的evt的uart的demo中, 初始化了几个io口,作为按键使用, 

  GPIOB_ModeCfg(GPIO_Pin_0, GPIO_ModeIN_PU);  //上拉输入 按键1


    GPIOB_ModeCfg(GPIO_Pin_1, GPIO_ModeIN_PU);  //上拉输入 按键2


    GPIOB_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PU);  //上拉输入 按键3


    GPIOB_ModeCfg(GPIO_Pin_3, GPIO_ModeIN_PU);  //上拉输入 按键4


    GPIOB_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);  //上拉输入 按键5


    GPIOB_ModeCfg(GPIO_Pin_5, GPIO_ModeIN_PU);  //上拉输入 按键6


    GPIOB_ModeCfg(GPIO_Pin_6, GPIO_ModeIN_PU);  //上拉输入 按键7


    GPIOB_ModeCfg(GPIO_Pin_17, GPIO_ModeIN_PU);  //上拉输入 按键8


但是不管是加载高电平还是低电平, GPIO_Pin_8,GPIO_Pin_17这2个脚的读数都是0,不正常; 其他的管脚是正常的,难道是这2个脚的用法有问题?是什么原因呢?

您好,您这个写法是没有问题的,IO配置为上拉输入后,该IO就会被设置为默认高电平;

检查下硬件上芯片焊接,地有没有充分接触,另外芯片引脚有无连锡或者虚焊的情况


我换了一个开发板, 也是这种情况,然后我再EVT的TMR例程中单独初始化pin17, 也是这种情况, 我用的是最新的EVT, 附件是我的代码;帮我看看是什么问题, 多谢了

icon_rar.gifTMR.rar



您程序中定义的tmp变量应使用uint32_t定义,我们的GPIOB_ReadPortPin函数返回的是一个32位数据

代表含义为每一个bit对应一个IO引脚,假设PB8为高电平,则第9个bit置1,那么返回值就是256,超出你的uint8_t定义,那么返回值一定为0。


明白了, 多谢


只有登录才能回复,可以选择微信账号登录