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、控制蜂鸣器、模拟通讯协议输出时序
三种输出模式:
推挽输出模式:(又称:强推输出模式)
P-MOS和N-MOS均有效
数据寄存器为1时,上管导通,下管断开,输出直接接到VDD-输出高电压;
数据寄存器为0时,上管断开,下管导通,输出直接接到VSS-输出低电压.
开漏输出模式:(可以作为通讯协议的驱动方式)(在多机通信的情况下,可以避免各个设备的相互干扰)
P-MOS无效,N-MOS有效
数据寄存器为1时,下管断开,输出相当于断开-高阻模式;
数据寄存器为0时,下管导通,输出直接接到VSS-输出低电压.
关闭模式
四、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是低电平怎么办?需要强制类型转换
