STM32小白视角笔记(标准库)(乱序版)

STM32

一、点灯操作

1.用寄存器的方式

更改起来比较麻烦:

除了PC13之外的位都配置成0,通过更改GPIOC->ODR来实现点灯熄灯操作

2.用库函数的方式


在工程目录下新建Library文件夹📂用来存放库函数
函数不会写怎么办?


把光标放在RCC_APB2PeriphClockCmd上面,就可以看到需要传递的参数了

然后你右键此函数名称:

直接跳转到函数定义,里面定义了参数值可以填入哪些
OK,that is

可以看到,此函数都是封装好的,或等于和与等于,so:库函数的配置不会影响到寄存器的其他位(库函数相比较寄存器有很大的好处)

我们只需要调用库函数,配置好参数就可以了✅

GPIO_Init这个函数使用结构体来配置参数

此函数的简介

结构体的其中一个参数如图:


GPIO_Mode_Out_PP是通用推挽输出,GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

&:取地址符
STM32的配置方式都是固定的,熟能生巧

最后设置高低电平:

这就是全部代码了:
手指缩放调节字体大小,或点击工具栏的🔧图标配置字体和颜色

分别通过注释高低电平,实现点灯关灯操作:

先点击左上角编译按钮,再点LOAD下载按钮,然后观察💡的亮与灭:

F103最小系统板PC13是低电平点亮:

3.3V → 限流电阻 → LED正极 → LED负极 → STM32 IO引脚

  • IO输出低电平(0):电流流通 → 灯亮

    IO输出高电平(1):两端电压相等,无电流 → 灯灭

三、GPIO输出

简介

GPIO(General Purpose Input Output)–通用输入/出口

应用:驱动LED、控制蜂鸣器、模拟通讯协议输出时序

三种输出模式

  1. 推挽输出模式:(又称:强推输出模式)

    P-MOS和N-MOS均有效

    数据寄存器为1时,上管导通,下管断开,输出直接接到VDD-输出高电压;

    数据寄存器为0时,上管断开,下管导通,输出直接接到VSS-输出低电压.

  2. 开漏输出模式:(可以作为通讯协议的驱动方式)(在多机通信的情况下,可以避免各个设备的相互干扰)

    P-MOS无效,N-MOS有效

    数据寄存器为1时,下管断开,输出相当于断开-高阻模式;

    数据寄存器为0时,下管导通,输出直接接到VSS-输出低电压.

  3. 关闭模式

四、GPIO应用

1.LED闪烁


用跳线:GND引到负极-,3.3V引到正极+


操作STM32的GPIO的3个步骤

Step1:使用RCC开启GPIO的时钟

Step2:使用GPIO_Init函数初始化GPIO

Step3:使用输出/入函数控制GPIO口

看一下,RCC最常用的三个函数:(外设时钟控制)

两个参数:第一个参数选择外设,第二个参数选择使/失能(ENABLE/DISABLE)

GPIO常用的库函数:


调用GPIO_DeInit函数,指定的GPIO外设会被复位;

GPIO_AFIODeInit函数,可以复位AFIO外设;

GPIO_Init函数重要📌,用结构体的参数初始化GPIO口;

GPIO_StructInit函数

读取函数:GPIO_ReadInputDataBit/GPIO_ReadInputData/GPIO_ReadOutputDataBit/GPIO_ReadOutputData

写入函数:GPIO_SetBits/GPIO_ResetBits/GPIO_WriteBit/GPIO_Write

光标放在变量上,右键跳转定义:
GPIO的八种工作模式:

我们点灯用的是推挽输出,所以用GPIO_Mode_Out_PP

可以看下图,LED灯亮了:


然后:

灯不亮了:

然后:

又亮了:
然后:
又不亮了:

2.LED流水灯

需要用到循环语句,并且在工程里加上延时函数:



if你就想要给它1和0,1是高电平,0是低电平怎么办?
需要强制类型转换