嵌入式技术论坛
直播中

王敏

7年用户 1468经验值
私信 关注
[问答]

STM32F401配置输出模式的内部机制是什么?

代码如下,初始化IO时,我想默认LED_RUN_PIN和Core_Reboot_PIN是高电平,所以Core_Reboot_PIN我在外部上拉了10K电阻,LED_RUN_PIN没有上拉(这个没有大影响),现在存在了如下问题:

初始化管脚后Core_Reboot_PIN我测量是低电平,导致我另一个mcu一直在复位,我必须在初始化时手动输出高电平才可以,但是我看函数内部实现不是no pull吗,我在外部上拉不可以吗?还是stm32上电默认输出就是低电平?刚开始搞嵌入式,不太明白内部机制,帮忙解答一下。

#define LED_RUN_PIN GET_PIN(C, 13)
#define LED_RUN_ON rt_pin_write(LED_RUN_PIN, PIN_LOW)
#define LED_RUN_OFF rt_pin_write(LED_RUN_PIN, PIN_HIGH)
#define Core_Online_PIN GET_PIN(C,0)
#define Core_Run_PIN GET_PIN(C,1)
#define Core_Reboot_PIN GET_PIN(C,2)
#define Core_Onlline rt_pin_read(Core_Online_PIN)
#define Core_Run rt_pin_read(Core_Run_PIN)
#define Core_Reboot_On rt_pin_write(Core_Reboot_PIN, PIN_LOW)
#define Core_Reboot_Off rt_pin_write(Core_Reboot_PIN, PIN_HIGH)
int main(void)
{
rt_pin_mode(LED_RUN_PIN, PIN_MODE_OUTPUT);//管脚输出默认就是低电平,代码内部是NO PULL啊
LED_RUN_OFF;//配置结束必须手动置高电平,才能默认高电平
rt_pin_mode(Core_Online_PIN, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(Core_Run_PIN, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(Core_Reboot_PIN, PIN_MODE_OUTPUT);//管脚输出默认就是低电平,代码内部是NO PULL啊
Core_Reboot_Off;//配置结束必须手动置高电平,才能默认高电平,即使外部有上拉电阻也不好使
}

回帖(2)

h1654155275.5916

2023-4-3 17:37:30
外部上拉可以. 不过要是线路太长,外部上拉可能拉不动了.最好内部上拉也给配置上.防止出现不正常.
stm32上电默认输出,按照你的配置去初始化的.初始化是什么就是什么.
举报

王敏

2023-4-3 17:37:37
我配置结束后,没有给任何输出,测量发现是低电平,那说明stm32默认输出就是低电平了吧
举报

更多回帖

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