STM32学习五点灯

首先根据原理图确定引脚

假设此时是接在PB8上外接一个高电平的LED

首先要查找GPIOB挂载在哪根时钟线,打开对应的时钟

STM32学习五点灯_第1张图片

由图可知挂载在APB1上

STM32学习五点灯_第2张图片

因此只需要将AHB1时钟线的第一位置一即可(从第0位开始)

到此时钟线基本打开,开始配置PB引脚

输出模式寄存器中选择输入/输出

选择输出后配置输出模式

然后是输出的速度和浮空等参数

最后配置高低电平设置LED默认状态,到此即可。

写好初始化函数在led.h文件中声明一下。

main.h中声明一下led.h即可调用函数

代码如下:

#include "led.h"
/*PB8--LED1*/
void led_init(void)
{
    //打开GPIOB时钟
 RCC->AHB1ENR|=(0x01<<1);
//输出模式
    GPIOB->MODER&=~(0X03<<2*8);///清零
    GPIOB->MODER|=(0X01<<2*8);
    
    //推挽
    GPIOB->OTYPER&=~(0x01<<1*8);
    
    //速度
    GPIOB->OSPEEDR&=~(0x03<<2*8);
    //浮空
    GPIOB->PUPDR&=~(0x03<<2*8);
    //输出高电平--灭灯
    GPIOB->ODR&=~(0X01<<1*8);
}
补充:此处没有从地址触发写,因为在stm32f4xx.h文件中已经定义好了

STM32学习五点灯_第3张图片

定义好偏移量,当调用GPIOB下的MODER时,只在GPIOB的地址下便宜一位,以此类推

STM32学习五点灯_第4张图片

如果看我的看不懂,看这个讲解详细

STM32直接操作寄存器点亮第一个LED灯_stm32使用寄存器点亮led灯实验报告-CSDN博客

你可能感兴趣的:(stm32,学习,嵌入式硬件)