92.STM32F103ZE HAL库模板建立全过程

模板目录

1 . Doc:内含功能说明和更新日志txt文件

2 . Libraries:存放需要用到的芯片配置文件
ST公司官网搜索STM32CubeF1,获取软件包,解压得到en.stm32cubef1
en.stm32cubef1\STM32Cube_FW_F1_V1.8.0\Drivers文件夹复制进来,留下CMSIS和STM32F1xx_HAL_Drive。(STM32F1xx_HAL_Driver中有HAL库帮助文档)
en.stm32cubef1\STM32Cube_FW_F1_V1.8.0\Middlewares复制进来,里面有ST的GUI,以及FreeRTOS等第三方件。

3.Project:keil工程文件

4.User:用户文件,包括bsp,segger,main

Keil配置

1.新建工程在project文件夹下,选择芯片stm32f103ze,叉掉RTE配置
2.项目文件分组
2.1User添加main文件 在这里插入图片描述

2.2BSP添加和板子适配的驱动

2.3MDK-ARM添加启动文件
F103ZEtemplate\Libraries\Drivers\CMSIS\Device\ST\STM32F1xx\Include中找到stm32f1xx.h,打开发现f103ze对应的是STM32F103xE。
故在
路径:F103ZEtemplate\Libraries\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm
找到F103ZEtemplate\Libraries\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm(注意是arm不是gcc,iar)
下的startup_stm32f103xe.s,添加进去(找不到文件,将搜索框改成all files)

2.4 HAL_Driver文件夹
F103ZEtemplate\Libraries\Drivers\STM32F1xx_HAL_Driver\Inc下找到stm32f1xx_hal_conf_template.h这个头文件里面设置自己需要引用的hal库头文件

F103ZEtemplate\Libraries\Drivers\STM32F1xx_HAL_Driver\Src下添加c文件(尽量全加,除了template文件。里面的函数重复定义,编译会不通过)
stm32f1xx_hal.c,用来初始化hal库
添加rcc和gpio

2.4 CMSIS文件夹配置
F103ZEtemplate\Libraries\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates下的system_stm32f1xx.c,主要用于复位 RCC 相关寄存器和中断向量表位置设置

2.5 SEGGER/HardFault文件夹

2.6 Doc文件夹
添加Doc下的更新日志和功能说明txt进去

Keil魔术棒配置

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

过程说明

1.复位
2.根据boot选择启动方式
3.调用启动文件,跳转执行SystemInit
4.到system_stm32f1xx.c中执行SystemInit
(该c文件#include “stm32f1xx.h”),而"stm32f1xx.h"又根据C/C++选项卡的define选择stm32f103xe.h和stm32f1xx_hal.h
而hal.h又include stm32f1xx_hal_conf.h,(stm32f1xx_hal_conf.h里定义用到的hal库,默认都用上)
5.SystemInit执行完回到启动文件,执行_main,然后跳转到main函数,从汇编来到c的世界
6.main函数上#include “stm32f1xx.h”

问题待解决:#include “EventRecorderConf.h” printf("%c",‘A’);
在这里插入图片描述
ST 库函数使用了 C 编译器的断言功能,如果定义了 USE_FULL_ASSERT,那么所有的 ST 库函数将检查函数形参
在这里插入图片描述
CC 局限性:
使能了外设时钟后,不能立即操作对应的寄存器,要加延迟。 不同外设延迟不同:
 如果是 AHB 的外设,使能了时钟后,需要等待 2 个 AHB 时钟周期才可以操作这个外设的寄存器。
 如果是 APB 的外设,使能了时钟后,需要等待 2 个 APB 时钟周期才可以操作这个外设的寄存器。
当前 HAL 库的解决方案是在使能了外设时钟后,再搞一个读操作,算是当做延迟用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值