Keil5新建工程

1、基于寄存器、基于库函数、基于HAL

1、基于寄存器:与51单片机开发案方式一样,是用程序直接配置寄存器,来达到我们想要的功能,这种方式最底层、最直接、效率更高一些,但是由于STM32的结构复杂、寄存器太多,所以基于寄存器的方式目前是不推荐的。
2、基于库函数:是使用ST官方提供封装好的函数,通过调用这些函数间接地配置寄存器。由于ST对寄存器封装的比较好,所以这种方式既能满足对寄存器的配置,对开发人员比较友好,有利于提高开发效率。推荐使用
3、基于HAL库:可以用图形化界面快速配置STM32,这个比较适合快速上手STM32的情况,但是这种方式隐藏了底层逻辑,如果对STM32不熟悉,基本只能停留在很浅的水平。可以熟悉基于库函数以后,熟悉基于HAL库方式,因为比较方便。

2、基于标准库的工程

固件库资源:https://pan.baidu.com/s/1fWaLxrYGIisNlBB2Rf4-1g 提取码 :oef1。提取密码:32
1、建立工程文件STM32Progect,Keil中新建工程,选择型号;
2、工程文件STM32Progect里建立Start、Library、User等文件,复制固件库里面的文件到工程文件;在创建的文件中添加固件库到start文件夹下
start文件夹

启动文件的选择:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加工程分组里
在这里插入图片描述
将固件库中的库函数源文件和头文件复制到工程里的Library中。
在这里插入图片描述
在User文件夹添加stm配置文件和中断文件
在这里插入图片描述
4、工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹;
在这里插入图片描述
5、工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER
在这里插入图片描述

6、工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Rset and Run。

3、工程架构

在这里插入图片描述
主动执行:首先是startup启动文件,这个是程序执行最基本的文件。启动文件是用汇编编写的,包括中断向量表,中断服务函数等。中断服务函数中有个复位中断,这就是整个程序的入口。当STM32上电复位或者按下复位键之后,程序就会进入复位中断函数执行。复位中断函数主要做了两件事情,第一,调用SystemInit函数;第二,调用main函数,对应启动文件的这里。其他中断也被定义,当符合条件后,会调用。
被动执行:
封装寄存器,更有利于程序的可读性。

4、基于库函数点灯实验

#include "stm32f10x.h"                  // Device header

int main(void)
{
	/*
	配置寄存器的方式进行点灯的操作,这种方式需要不断
	地查手册来了解每个寄存器每位是干什么的。
	不方便
	
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x00300000;
	GPIOC->ODR = 0x00000000;		//灯亮
	GPIOC->ODR = 0x00002000;
	*/
	//基于库函数点灯
	//用来使能或者失能APB2的外设时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	//配置端口模式,第一个是选择哪个GPIO,第二个是参数的结构体
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	//设置高电平 GPIO13口为高电平
	GPIO_SetBits(GPIOC,GPIO_Pin_13);
	//设置低电平
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	
	while(1)
	{
	}
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值