网络控制继电器操作,使用了A15,B3,B7,B11,C3,C4,C11,C12八个gpio,引脚设置后进行置高电平,但上电瞬间,A15和B3引脚有低电平输出,造成抖动。
查看手册里管脚说明,也没有找到引脚初始化时,哪些引脚再上电过程中会有翻转?
不知道是不是有其他需要留意的文档细节没有看到,另外管脚初始化过程中会有翻转的都有哪些?请指点,谢谢
代码截图如下:
网络控制继电器操作,使用了A15,B3,B7,B11,C3,C4,C11,C12八个gpio,引脚设置后进行置高电平,但上电瞬间,A15和B3引脚有低电平输出,造成抖动。
查看手册里管脚说明,也没有找到引脚初始化时,哪些引脚再上电过程中会有翻转?
不知道是不是有其他需要留意的文档细节没有看到,另外管脚初始化过程中会有翻转的都有哪些?请指点,谢谢
代码截图如下:
单片机上电初始化阶段IO是浮空输入状态,这个你需要在外部加上拉电阻给它一个确定的电平。
看手册上引脚都带有内部上拉和下拉,这个有没有办法通过设置后让他初始化时处于设定的上拉或者下拉,谢谢
你好,引脚在没初始化时是处于浮空输入态,是不带上下拉的,此时引脚电平取决于外部输入。要让引脚上下拉需要等程序跑到相关配置部分的代码才可以。你这种情况建议在IO口加个上拉或者下拉电阻以保证IO在上电初期有一个确定的电平。
好的,明白了
电路设计中,加了4.7KR外部上拉,上电瞬间依然有低电平存在,可以看到指示灯亮下灭掉
请用示波器双通道同时抓下芯片上电信号,以及你所说的IO端口信号贴出来。目前看你这这情况可能是已经执行相关代码了,端口初始化为普通推挽模式,不做任何操作就是输出低电平,建议你初始化完就立刻输出高,或者提前就将ODR寄存器置1。
库函数 GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal);第三个参数用的是枚举类型,
typedef enum
{
Bit_RESET = 0,
Bit_SET
} BitAction;
改成 GPIO_WriteBit(GPIOB, GPIO_Pin_4, Bit_SET);这种试一下。
参看我最上面截图,实际上端口初始化后,随机就进行了引脚置高设置。
参考@小卡啦米的建议,使用Bit_SET,效果是一样 的,上电仍然有低电平输出,不过时间很短,并没有造成继电器的闭合。
不知道有没有其他方面可以改进。
此处无法上传视频,发到了b站,https://www.bilibili.com/video/BV1Nf42127Rx/?spm_id_from=333.999.0.0