STM32基本开发流程(以GPIO为例)

小歆11年前STM3203308

初学stm32,在此总结一下stm32的基本开发流程,就当总结规律方便以后进一步学习;本文所有内容都是基于ST库3.5版本的个人见解!

时钟部分

个人理解,为了降低功耗stm32将其外设时钟分别连接到APB1、APB2、AHB时钟线上,并设立开关,让我们用到什么打开什么。

开启/关闭时钟用到的3个函数:(调用了rcc库文件)

RCC_APB1PeriphClockCmd(...);
RCC_APB2PeriphClockCmd(...);
RCC_AHBPeriphClockCmd(...);

上面三个函数字面上的意思是:rcc文件_某个时钟线,外设,时钟,命令。

通过库说明文件我们可以了解,这个函数有两个参数:(以下将以GPIO为例)

1、外设名称“RCC_APB2Periph_xxx”其中“xxx”为外设名称(我们可以写GPIOA,GPIOB...);
2、开/关 分别使用 “ENABLE”/"DISABLE"。

初始化配置部分

任何一个stm32的片上外设初始化结构都差不多,主要包括“定义结构体”、“配置参数”、“执行参数”、“初始化状态”等。为了初始化设置方便,我们一般将该部分写在一个名为“xxx_Config(void);”的函数中。

1、定义结构体:实为将外设的参数结构体实例化,使其方便配置;我们可以在库说明文件中找到这个结构,来查看我们将要配置的参数。

定义方法:

xxx_InitTypeDef 参数标识符 ;

其中“xxx”为外设名称(如:GPIO、USART、NVIC等),“参数标识符”不解释。
例如:

GPIO_InitTypeDef gpio_val; //实例化的结构体名为gpio_val

2、配置参数:

参数标识符.参数 = 值 ;

其中“参数”可以在库说明文件中查找“xxx_InitTypeDef”获得;“值”在库说明文件中也有相关说明。
例如:

gpio_val.GPIO_Pin = GPIO_Pin_0; //开启端口0,多个端口可用“|”连接
gpio_val.GPIO_Mode = GPIO_Mode_Out_PP; //设置为普通推挽输出
gpio_val.GPIO_Speed = GPIO_Speed_50MHz; //速率为500MHz

3、执行参数:

xxx_Init(具体外设,&参数标识符);

其中“xxx”为外设名称;具体外设不是所有的外设都有(可以查看库说明文件);注意“&”不能丢!
例如:

GPIO_Init(GPIOB, &gpio_val); 

4、初始化状态:因不同的外设而不同,在GPIO中我们可以设置初始状态为“高”/“低”电平。
例如:

GPIO_SetBits(GPIOB, GPIO_Pin_0); //PB0为高电平
GPIO_ResetBits(GPIOC, GPIO_Pin_3 | GPIO_Pin_4); //PBC3和PBC4为电平

相关文章

在Keil MDK中编译Keil C51教程

在电脑中同时要用到51和STM32开发,同时安装了Keil MDK和Keil C51。   我先安装Keil C51,再安装Keil MDK,安装在不同的目录下...

小歆のBlog迁移至emlog

小歆のBlog迁移至emlog

起因 2017年1月13日小歆のBlog作为最后一个网站从BudgetVM迁移至阿里云,使用国内的服务器能够得到更好的速度体验,为了更好发挥这个优势博客站将放弃WordPress转为...

VB模拟POST网页上传文件模块【无控件】

VB模拟POST网页上传文件模块【无控件】

介绍 已经集成mod模块,使用的时候直接调用FileUpload函数就可以了。程序是使用抓包软件将上传过程截取下来,通过post模拟上传头数据,再把文件转换为二进制上传到网站上的。...

VB(十六进制)颜色代码与RGB互转工具V2.0(附屏幕取色工具)06.jpg

【VB源码】十六进制颜色代码与RGB互转工具

VB(十六进制)颜色代码与RGB互转工具     功能介绍:     1.《VB(十六进制)颜色代码与RGB互转工具》是由《VB颜色代...

小歆网页刷屏工具01.jpg

[小歆][网页刷屏工具][V1.3][2012.10.01]

小歆网页刷屏工具 V1.3 软件介绍:     1.《小歆网页刷屏工具》是由小歆工作室内部刷屏工具研发而来的;     2.软件界面简洁,轻...

Discuz附件下载权限绕过工具.png

[小歆][Discuz附件下载权限绕过工具][V1.1][2014.03.13]

Discuz附件下载权限绕过工具V1.1 本软件利用Discuz论坛的漏洞来下载论坛的附件。 【Discuz3.X的有部分好像已经失效了,自测,我刚刚测试了一个3.X论坛还是...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。