当前位置:首页 >> 半导体技术突破 >> 【STM32】新建工程,富勒l110

【STM32】新建工程,富勒l110

cpugpu芯片开发光刻机 半导体技术突破 1
文件名:【STM32】新建工程,富勒l110 【STM32】新建工程

学习来源:[2-2] 新建工程_哔哩哔哩_bilibili

目前STM32的开发主要有基于寄存器的开发方式、基于标准库也就是库函数的方式和基于HAL库的方式。本学习是基于库函数的方式。(各种资料去百度云下载)

1 建立工程文件夹

Keil中新建工程,选择型号

选择相应的芯片型号(STM32F103C8T6)

关掉工程小助手

2 在工程文件夹中新建文件

工程文件夹里建立Start、复制固件库里面的文件到工程文件夹;

2.1 STM32的启动文件

在工程文件夹里新建start文件夹

找到STM32的启动文件

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\

stm32f10x.h是STM32的外设寄存器描述文件,作用和51单片机的REGX52.H一样,是用来描述STM32有哪些寄存器和它对应的地址的。

两个System文件主要是用了配置时钟的。STM32主频72MHz就是System中的函数配置的。

复制到Start文件夹中。

因为这个STM32是内核和内核外围的饺备组成的,所以添加内核寄存器的描述文件到Start文件下

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

2.2 将复制的文件添加到工程

添加启动文件(为什么选这个,后面会说)

剩下的.c和.h文件都要添加进来,结果如图

2.3 在工程选项中添加头文件的路径

添加start的路径

2.4 新建main函数

先在工程目录下添加User文件夹,再在界面新建User目录,添加c文件,将路径改到User下

#include "stm32f10x.h" // Device headerint main(void){while(1){}}

编译

这个工程目前还没有添加STM32的库函数,所以它还是基于寄存器开发的工程。(想使用寄存器开发STM32到这里就可以了,但是我们是基于库函数的学习)。

调编码格式(UTF-8)、字体、缩进

2.5 通过配置寄存器来完成点灯实验

【了解】

配置调试器

再点击设置按钮

勾上选项之后。我们下载程序后会立马复位并执行。这样方便些。

打开STM32的参考手册(STM32F10xxx参考手册)

(a)首先是RCC的寄存器,来使能GPIO的时钟,GPIO都是APB2的外设

RCC: Reset and Clock Control,即复位和时钟控制。

APB2 外设时钟使能寄存器(RCC_APB2ENR)

这一位就是使能GPIOC的时钟的

写1是打开时钟,即

RCC->APB2ENR = 0x00000010;

(b)需要配置PC13口的模式(端口配置高寄存器(GPIOx_CRH) (x=A..E))

CNF13和MODE13就是配置13号口的

CNF配置为通用推挽输出模式,MODE配置为输出模式。

其他全为0

GPIOC->CRH = 0x00300000;

(c)GPIO输出数据

测试代码

#include "stm32f10x.h" // Device headerint main(void){RCC->APB2ENR = 0x00000010;GPIOC->CRH = 0x00300000;GPIOC->ODR = 0x00000000;// 低电平点亮//GPIOC->ODR = 0x00002000;// 灭while(1){}}

需要不断查手册,来了解寄存器的功能。(不方便)

2.6 通过库函数实现点灯实验

在工程目录下新建Library文件夹,将下述文件夹下的所有文件粘贴到Library下(库函数的源文件和头文件)

\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc

结果如图

此时库文件还不能使用,需要再添加配置文件,将下述文件粘贴到User路径下,再在keil中将新加的文件加入

\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

结果如图

最后需要一个宏定义

USE_STDPERIPH_DRIVER

将文件夹添加进来

代码步骤和配置寄存器是一样的

(1)配置时钟-RCC_APB2PeriphClockCmd

本质函数配置寄存器

(2)配置端口模式-GPIO_Init

两个参数,GPIO_TypeDef* GPIOx和GPIO_InitTypeDef* GPIO_InitStruct

GPIOx选择GPIOC即可;

GPIO_InitStruct是一个结构体

GPIO_Pin

GPIO_Mode

GPIO_Speed

测试代码

#include "stm32f10x.h" // Device headerint main(){// 使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);// 配置端口模型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_SetBits(GPIOC, GPIO_Pin_13); // 高电平 灭GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 低电平 亮GPIO_Init(GPIOC, &GPIO_InitStructure);while (1){}} 3 型号分类及缩写

前面选择启动文件的时候,选择后缀为md的文件。我们的型号是STM32F103,64k

4 总结新建工程 建立工程文件夹,Keil中新建工程,选择型号工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run 5 工程架构

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接