STM32F4 PB3 PB4 端口复用 普通IO

入门学习的一块板子,用到了PB4作为直流有刷电机方向控制IO,配置过程中走了一些弯路,终究还是解决了。感谢网络上解答相关问题大大神们。

对于STM32F1系列的端口配置方法,有明确的实例可以借鉴学习。如下代码是测试可用的

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);   
 //打开GPIO口时钟,先打开复用才能修改复用功能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
//要先开时钟,再重映射;这句表示关闭jtag,使能swd。  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;    //端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //50M
GPIO_Init(GPIOB, &GPIO_InitStructure);

STM32F4系列的端口复用,使用GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)这个函数,网上可以找到具体例程。

我这次是用于普通IO,在网上找了一圈也没有这部分的明确说明要怎么配置。我会在这个小问题上卡住,还是因为先配置使用的F103,再配置f405就突然不会了(苦笑)。解决之后发现如此简单,还是在这里记录一下吧,希望能帮到像我一样的初学者。

如下例程,对比PB4与其他几个端口,都是一样的,不需要额外配置。(哈哈哈)    

    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE);//使能端口时钟
    
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_5;   
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;           //输出模式
    GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;          //输出
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;      //高速100MHZ
    GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;            //上拉
    GPIO_Init(GPIOB,&GPIO_InitStructure);                 //初始化

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;                        //PB4
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;           //设置为输出模式
    GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;          //输出
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;      //高速100MHZ
    GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;            //上拉
    GPIO_Init(GPIOB,&GPIO_InitStructure);                 //初始化

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值