STM32基于库函数开发过程

一、STM32的一个基本开发流程如下:
1、先创建好工程项目的各个文件夹(如user,core,obj ,STMF10x_FWLib)
2、新建项目,选择芯片类型,并将上面四个文件夹添加文件
3、右击Target1,选择Manage Components,Target1改成项目名,添加以上四个文件夹,再Add Files添加每个文件夹文件
各个文件夹所需添加的文件如下:
USER:用来放工程文件,主函数文件main.c,其他如:system_stm32f10x.c, system_stm32f10x.h, stm32f10x.h, stm32f10x_it.c, stm32f10x_it.h, stm32f10x_conf.h;
CORE: 用来存放核心文件和启动文件, 核心文件如 core_cm3.c, core_cm3.h
启动文件如 startup_stm32f10x.c;
OBJ: 用来存放编译过程文件以及hex文件,编译过程自动生成,不需要添加;
STMF10x_FWLib: 用来存放ST官方提供的库函数源码文件,如src,inc;
4、点击魔术棒,Output,设置编译文件存放目录,定位到OBJ
5、将文件路径包含进来,魔术棒 -> c/c++ -> path将user,core,obj ,STMF10x_FWLib的inc添加进去,在Define输入框输入STM32F10X_HD,USE_STDPERIPH_DRIVER
6、将代码复制到USER下方的main.c替换原代码
7、到Output界面,勾选Create HEX file --> 使编译过程产生hex文件
8、将SYSTEM目录(固件库下的)3个文件复制到SYSTEM下,按照前面的方法,添加文件夹以及头文件目录。此处为一些类似于系统的函数,如delay.c等

如此就是创建一个项目的全部详细步骤(以上方法是基于正点原子所提供的文件以及自己搜集资料来整理出来的,这个模板可以在正点原子所提供的程序源码中可以找到,使用时,只需把那个文件复制出来,改个项目名就行,十分方便,就不要需要这个创建过程)

对于实际开始写程序,以跑马灯为例
1、为每个外设编写驱动程序源文件 led.c , led.c 包含外设初始化函数led_init(void)
2、将外设驱动程序的常量定义和函数声明等写入对应的头文件led.h, led.c要包含led.h
3、新建文件夹HARDWARE,并将led.h, led.c添加进去(HARDWARE文件夹主要是放你写的那些硬件驱动函数),添加方法与前面类似
4、编写main() 函数,实现项目需要的主控流程。主程序应包含外设驱动头文件led.h

二、STM32外设的结构类型:
每种外设至少有两个结构体数据类型:位于stm32f10x.h头文件中的外设寄存器结构体GPIO_TypeDef,用于访问外设寄存器;另一个是GPIO_InitTypeDef,用于配置外设初始化参数
有了这两个外设结构体,就可以使用外设驱动程序库进行编程,步骤如下:
1、开启外设时钟:使用RCC的外设时钟命令函数 --可以工作
2、外设初始化:定义外设初始化结构变量,为外设初始化结构变量成员赋值,调用外设初始化函数配置外设 --如何工作
3、控制外设:使用驱动程序库函数编写应用程序 --进行工作

void LED_Init(void)
{

#include “stm32f10x.h” // Device header
GPIO_InitTypeDef GPIO_InitStructure; //定义外设初始化结构变量

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0–>PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1–>PE.5 端口配置, 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟,打开外设时钟,允许外设开始工作
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值