【百问网】物联网学习笔记
Keil创建HAL库工程模板步骤:
1. 创建相关文件夹;
2. 复制CMSIS和HAL库;
3. 创建“main.c/h”和“stm32f1xx_clk.c/h”;
4. 创建新Keil工程;
5. 添加组文件夹和工程文件;
6. 配置Keil设置
1. 创建相关文件夹
各文件夹、文件说明如下:
Core:存放从SDK文件夹抽取的部分可能会修改的核心文件;
Driver: 存放用户编写的外设驱动文件;
Main: 存放主函数文件;
Project: 存放Keil工程文件,包含目标二进制文件;
SDK:存放CMSIS和HAL库;
Clean.bat:Windows脚本,用于清理Project里Keil生成的工程文件;
Readme.txt:该工程的说明信息;
2. 复制CMSIS和HAL库
“Core”目录的内容来自“CMSIS\Device\ST\STM32F1xx\Source\Templates\arm\startup_stm32f103xb.s”;
“STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Templates\”下的“Src\system_stm32f1xx.c”、“Src\stm32f1xx_it.c”、“Inc\stm32f1xx_it.h”、“Inc\stm32f1xx_hal_conf.h”;
3. 创建“main.c/h”和“stm32f1xx_clk.c/h”
还需要手动创建“stm32f1xx_clk.c” 和“stm32f1xx_clk.h”,这两个文件内容是一些时钟初始化。
“Project”用于存放工程文件,工程文件由创建Keil工程自动生成。
4.打开Keil,新建工程
保存路径在Project。
5. 添加组文件夹和工程文件
点击“工程项目管理”按钮为工程添加文件,工程添加后的各目录:
6. 配置Keil设置
接着进入主界面,点击“工程项目选项”按钮“魔术棒”,设置Target
切换到“Output”,勾选上“Create HEX File”,生成hex文件供其它烧写工具使用。
再切换到“C/C++”标签,在“Define”栏填入“USE_HAL_DRIVER,STM32F103xB”,分别表示使用HAL库,使用的芯片型号系列。HAL库很多C语言语法采用C99标准,这里需要勾选上“C99 Mode”,不 然会编译报错。最后点击“Include Paths”最右边的按钮 添加头文件,如图
添加头文件路径 :
切换到“Debug”标签,使用的ST-Link,因此需要选择“ST-Link Debugger”,最后点击“OK”
之后便可以以此工程为模板,编辑main.c,向“Driver”添加外设驱动程序,进行开发。
比如新建LED部分的驱动代码,源代码文件与头文件分别是“driver_led.c”,“driver_led.h”, 保存在工程文件夹“Driver”中,这样方便移植与阅读。
HAL库:官方推荐,易读,易移植
要会使用C语言操作寄存器,库开发(标准库、HAL库)
调用库函数去操作寄存器
下载资料:
STM32F103C8 - 主流增强型ARM Cortex-M3 MCU,具有64 KB Flash、72 MHz CPU、电机控制、USB和CAN - STMicroelectronicsSTM32F103C8 - 主流增强型ARM Cortex-M3 MCU,具有64 KB Flash、72 MHz CPU、电机控制、USB和CAN, STM32F103C8T6TR, STM32F103C8T6, STM32F103C8T7TR, STM32F103C8T7, STMicroelectronicshttps://www.st.com/zh/microcontrollers-microprocessors/stm32f103c8.html#documentationSTM32CubeF1 - STM32Cube MCU包,用于STM32F1系列(HAL、底层API和CMSIS(CORE、DSP和RTOS)、USB、TCP/IP、File system、RTOS和Graphic - 附带在以下ST板上运行的示例:STM32 Nucleo、探索套件和评估板) - STMicroelectronicsSTM32CubeF1 - STM32Cube MCU包,用于STM32F1系列(HAL、底层API和CMSIS(CORE、DSP和RTOS)、USB、TCP/IP、File system、RTOS和Graphic - 附带在以下ST板上运行的示例:STM32 Nucleo、探索套件和评估板), STM32CubeF1, Patch_CubeF1, STMicroelectronics
https://www.st.com/zh/embedded-software/stm32cubef1.html#