【江协科技STM32视频总结】CH2-2 新建工程

新建工程

目前STM32的工作方式主要有基于寄存器的方式,基于标准库(库函数),基于HAL库

基于寄存器:

  • 和51单片的开发方式一样,用程序直接配置寄存器,达到想要的功能。
  • 这种方式最底层,最直接,效率会更高一些
  • 但是由于STM32的结构复杂,寄存器太多,所以不推荐

基于标准库(库函数):
使用ST官方提供的封装好的函数,通过函数调用间接配置寄存器
本课程使用

基于HAL库:
使用图形化界面快速配置STM32,适合快速上手
隐藏了底层逻辑,推荐学完标准库再使用此类

创建工程:

  1. 新建文件夹,命名为Project
    在这里插入图片描述

在这里插入图片描述
3. 配置启动文件
固件库中找到以下文件在这里插入图片描述Project中新建Start文件夹
进行粘贴

重新回到固件库中,将以下3个文件也放入Start文件夹

说明:

  • 第一个.h文件为外设寄存器描述文件 两个system文件用于配置时钟

在这里插入图片描述添加内核寄存器描述文件
(因为STM32是内核和外围寄存器一起的)
.c文件是内核配置函数
在这里插入图片描述新建 Group 改名 Start
引入Keil 5中,在 Options for targtes 中找到 C/C++ 中添加Start路径
在这里插入图片描述

  1. 新建 main.c 文件进行测试
    在这里插入图片描述

板子连线

在这里插入图片描述Options for targtes 中找到 Debug 中设置
在这里插入图片描述
Settings 中勾选 Reset and Run

检查板子是否连接成功

  1. 检查连线,一定要对应
  2. 如果连接上 SWDIO 会显示如下
    在这里插入图片描述
    点击Build,再点击Load,灯灭

配置寄存器点灯

通过参考STM32手册
RCC 寄存器,来使能 GPIOC 的时钟(GPIO都是APB2的外设,可以在图纸里看到)
第一个寄存器可以在 7.3.7 APB2 外设时钟使能寄存器(RCC APB2ENR) 这个目录看到:
4 - IOPCEN 为使能 GPIOC 的时钟,写 1 打开,32位换算成16进制 4个一分组

GPIO 寄存器
第二个寄存器配置 PC13口的模式 :
8.2.2 端口配置高寄存器(GPIOx CRH)(X=A…E)CNF13[1:0]MODE13[1:0] 是用来配置 13号口。 CNF 选择 通用推挽输出 00MODE输出模式 11

第三个寄存器配置 PC13 口输出数据
8.2.4端口输出数据寄存器(GPIOX ODR)(X=A…E)ODR13 进行配置 1为高电平,0为低电平

#include "stm3210x.h'
int main(void){
	RCC->APB2ENR = 0x00000010;
	GPIOC->CRH = 0x003000002;
	GPIOC->ODR = 0x00002000; //将2改为0,则亮灯
	while (1){
	}
}

缺点:
把除了 PC13 之外的位都配置成了 0,这样会影响其他端口原有配置
如果只配置 PC13 而不影响其他位,那还需要 &=|= 的操作,较为麻烦

使用库函数点灯

  1. Projects 中新建 Library 文件夹
  2. 固件库中按照图中路径复制以下文件到 Library 文件夹
    在这里插入图片描述再打开 inc 文件夹继续全选并粘贴至 Library 文件夹
    在这里插入图片描述3. 在 Keil5 中进行配置在这里插入图片描述再去固件库中找到以下3个文件
    在这里插入图片描述添加到 User
    在这里插入图片描述
    打开 stm32f10x.h 以下语句说明 定义了 USE STDPERIPH DRIVER 这个字符串,该库函数才有效
    在这里插入图片描述需要在 工程选项 中配置
    在这里插入图片描述编译加载
    程序代码如下,设置高低电平GPIO_SetBits进行操作
#include "stm32f10x.h"                  // Device header

int main(void){
	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_Init(GPIOC,&GPIO_InitStructure);
	GPIO_SetBits(GPIOC,GPIO_Pin_13); //light on,高电平
	//GPIO_ResetBits(GPIOC,GPIO_Pin_13);//light off,低电平
	while(1){
		
	}
}

每一句代码都可以右键找到参数说明进行配置

总结

  1. 启动文件根据 芯片型号 选择 对应缩写文件
    在这里插入图片描述
  2. 新建工程步骤
    1)建立工程文件夹,Keil中新建工程,选择型号
    2)工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹
    3)工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里(添加.h 文件方便查找)
    4)工程选项, C/C++,Include Paths内声明所有包含头文件的文件夹程选项,
    5)工程选项,C/C++,Define内定义USE STDPERIPH_DRIVER
    6)工程选项,Debug,下拉列表选择对应调试器,Settings,FlashDownload里勾选Reset and Run
  3. 工程架构
    startup启动文件作为最基本文件startup_stm32f10x.mds 中定义了中断向量表,中断服务函数等。中断服务函数中的复位中断是整个程序的入口
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值