STM32
直播中

潘飘稚

8年用户 965经验值
私信 关注
[问答]

stm32f030c8t6为什么PF6拉不高呢?

是不是需要上拉电阻才能拉高,可是PB8也没上拉也能拉高,PF5就不行,代码如下
      RCC->AHBENR |=0x01<<22;

        GPIOF->MODER  =~(0x03<<10);
        GPIOF->MODER |= 0X01<< 10;
        

//        GPIOF->OTYPER  = ~(0X01<<5);        

//        GPIOF->OSPEEDR |=0x01<<10;

        GPIOF->PUPDR  =  ~(0x03<<10);

        GPIOF ->ODR |=0x01<<5;[/td]

回帖(2)

颜立歆

2024-4-25 16:06:21
可以检查下引脚的默认功能,如果默认不是GPIO的话操作无效
举报

王秀兰

2024-4-25 17:32:27
首先,我们来分析一下你的代码和问题。

问题:STM32F030C8T6的PF6引脚无法拉高。

代码:
1. RCC->AHBENR |= 0x01 << 22; // 使能GPIOF时钟
2. GPIOF->MODER = ~(0x03 << 10); // 清除PF6和PF7的模式位
3. GPIOF->MODER |= 0X01 << 10; // 设置PF6为输出模式
4. // 缺少设置PF6为高电平的代码

根据你的代码,你已经完成了以下步骤:
1. 使能了GPIOF的时钟。
2. 设置了PF6为输出模式。

但是,你没有将PF6设置为高电平。为了解决这个问题,你需要添加一行代码来设置PF6为高电平:

5. GPIOF->BSRR = 0x01 << 6; // 将PF6设置为高电平

现在,让我们回答你关于上拉电阻的问题。在STM32F030C8T6中,内部上拉/下拉电阻是可选的,可以通过GPIO的PUPDR寄存器来配置。如果你发现PF5无法正常工作,可能是因为它没有配置内部上拉电阻。你可以尝试以下操作:

6. GPIOF->PUPDR = ~(0x03 << 10); // 清除PF6和PF7的上拉/下拉配置
7. GPIOF->PUPDR |= 0x01 << 10; // 为PF6启用内部上拉电阻

这样,PF6就会有内部上拉电阻,而PF5则需要根据实际情况来判断是否需要上拉电阻。如果PB8可以正常工作而没有上拉电阻,那么可能是其他原因导致PF5无法正常工作,例如外部电路问题或者代码中的错误。

总结一下,你需要添加一行代码将PF6设置为高电平,并检查PF5是否需要内部上拉电阻。同时,也要检查外部电路是否存在问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分