打印
[STM32U5]

STM32 偶发性无法PA10无法上拉

[复制链接]
1146|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
blbllcom|  楼主 | 2022-8-22 17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 blbllcom 于 2022-8-22 17:26 编辑
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOA, &GPIO_InitStructure);


上电,初始化端口,程序运行...

大概有5%的概率,PA10是低电平(悬空测试)。  别的地方没有用到这个端口,这是什么情况...  把我给整懵逼了。

刚开始是高电平,但是瞬间下拉到0,很奇怪。 而且正常的时候,PA10端口略低于输入电压(比如只有3.19V的样子)。  另外,此端口没有波形,就是单纯的电平。

使用特权

评论回复
沙发
blbllcom|  楼主 | 2022-8-22 17:27 | 只看该作者
补充:
CPU是STM32F030K6T6,用的内置RC振荡

一起设置的PA11,PA12都正常的,就PA10有时候启动后是低电平,一直保持低电平。

使用特权

评论回复
板凳
blbllcom|  楼主 | 2022-8-22 20:22 | 只看该作者
疑似原因:
开启TIM1 PWM的时候,PA10有概率出错,从而将上拉失效(PA10对应TIM1-CH3,但是我没有用CH3)。  即便出错了,所有的PWM输出都正常,我一共用了一路互补,3路普通PWM输出,全部正常。

解决方案:
PWM初始化完成后,重新初始化按键,重新上拉。 目前测试200次循环了,暂时还没发现问题。

使用特权

评论回复
地板
gxs64| | 2022-8-23 10:13 | 只看该作者
我也遇到过类似问题,示波器探头接上就没事,一取就有问题。后来加一上拉电阻才行

使用特权

评论回复
5
专注于嵌入式| | 2022-8-23 13:22 | 只看该作者
blbllcom 发表于 2022-8-22 20:22
疑似原因:
开启TIM1 PWM的时候,PA10有概率出错,从而将上拉失效(PA10对应TIM1-CH3,但是我没有用CH3)。 ...

PA10你虽然没用,但是,你开启了PWM,会重新初始化IO,这个时候,你的上拉设置被取消了,变成了浮空。电平不定,你应该使用了库软件自动生成的程序吧?

使用特权

评论回复
6
blbllcom|  楼主 | 2022-8-24 08:30 | 只看该作者
专注于嵌入式 发表于 2022-8-23 13:22
PA10你虽然没用,但是,你开启了PWM,会重新初始化IO,这个时候,你的上拉设置被取消了,变成了浮空。电 ...

原因的确是这样,很奇怪,就是5%的概率会被重置。 即便没用对应引脚的PWM输出。

后来写延时确定就是这个了,上拉成功、PWM开启后上拉失效,再次上拉成功。
用的标准库,基本手敲的代码。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

30

帖子

0

粉丝