玩转STM32F407
前言
正好有一块stm32f407zgt6的板子,决定好好学一学,就用这种写博客的方式来记录学习的过程。也希望获得更多志同道合的小伙伴一起交流,一起学习。
一、项目准备
1.STM32概述
STM32F4是由ST(意法半导体)开发的一种高性能微控制器系列。其采用了90nm的NVM工艺和ART技术(自适应实时存储加速器,Adaptive Real-Time MemoryAccelerator™)
这里使用的是核心板,如图:
2.环境搭建
工具:keil5
可在官网下载搭建环境:
https://www.keil.com/download/product/
也可使用下方链接下载(包含mdk、注册机、原理图、开发手册)
链接:https://pan.baidu.com/s/1shkLHdBRMVwerEur8LF-Nw?pwd=8888
提取码:8888
二、代码开发
1.查看原理图
图中LED的引脚分别是PF9和PF10,所以我们使用这两个引脚。
2.代码开发
代码如下:
#include "stm32f4xx.h" // Device header
GPIO_InitTypeDef GPIO_InitStructure; //初始化gpio需要的结构体
//一个自定义暂时用的延时函数
void delay(void)
{
uint32_t i=0x2000000;
while(i--);
}
int main(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOE时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
//GPIOF9,F10初始化设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
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(GPIOF, &GPIO_InitStructure);//初始化
GPIO_SetBits(GPIOF,GPIO_Pin_9 |GPIO_Pin_10);
while(1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);//GPIOF9设置低,灯亮
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_9);//GPIOF9设置高,灯灭
delay();
GPIO_ResetBits(GPIOF,GPIO_Pin_10);//GPIOF10设置低,灯亮
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_10);//GPIOF10设置高,灯灭
delay();
}
}
这里实现的是两盏LED灯流水灯的效果。
总结
STM32F4的库函数比较多,没有办法全记住,所以借助帮助文档更有利与开发。