前提示
STM32打开外设资源的步骤
- 打开硬件电源时钟,打开哪些开关才能开启时钟RCC
- 配置硬件模式
- 使能硬件工作
代码
思路
1、首先开启时钟
比如我想要设置GPIOA的PA8脚连接灯,就需要开启GPIOA的时钟。
这里需要注意的是
Enables or disables the High Speed APB (APB2) peripheral clock.
(翻译)启用或禁用高速 APB (APB2) 外设时钟。
要注意使用的外设是不是挂在APB2这个时钟上
2、配置硬件模式
意思是我想要对GPIOA进行PA8进行设置我需要对GPIO进行初始化,设置一些参数模式。
结构体用法
GPIO_InitTypeDef + 名称,然后名称.出参数,选择你所需要的参数。
配置好后如图
3、点灯
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高
GPIO_ResetBits 置低
GPIO_SetBits 置高
参考代码
#include "stm32f10x.h"
//假延时
void Delay(u32 count)
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PA,PD端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 端口配置, 推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PD.2 输出高
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_SetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
}
}
这篇没有总结,只有一些逼逼赖赖
本来打算一个一个工程的解读正点原子的示例代码的,但是感觉没必要基本上按照这个思路点灯、跑马灯基本都给过了一遍了!!!
但是我刚刚在查看跑马灯的时候,看到了一个有趣的操作。
STM32位带操作
PAout(n)作为左值使用,PAin(n)作为右值使用
然后正点的示例程序大都是按照这个来的。
算是知识的拓展了。