自从ST公司推出了STM32CubeMX软件,使得开发者开发成本和时间大大缩小,通过这款软件,用户可以选择芯片和配置时钟、外设等等,可以直接生成工程代码,虽然功能逻辑还是要自己补充,但是已经省去原来工程创建和繁琐的外设配置。
但是对于初学者要懂得手动创建一个完整的工程,有利于加深对工程目录结构和各类驱动文件的理解,本文将带领读者手动创建基于HAL库的STM32工程项目。
1.新建本地工程文件夹
电脑本地新建“Template_HAL”文件夹,在该文件夹下新建5个文件夹,如下图所示
2.添加HAL库
将HAL库添加到工程文件夹中,HAL库下载和说明我在另外一篇文章中有详细介绍。
3.新建工程
打开Keil-MDK,新建工程,保存在“Template_HALMDK-ARM”目录下,工程名称可以根据自己的项目命名。
根据项目使用的CPU具体型号来选择选择芯片,小编这里使用STM32F103C8T6。
添加组文件夹
组文件夹添加文件
根据芯片的容量选择启动文件
选择src下的代码源文件
选择项目用到的外设代码源文件
选择系统配置文件
引入头文件路径
添加宏
USE_HAL_DRIVER 宏:为了让 stm32f1xx.h 包含 stm32f1xx_hal_conf.h 这个头文件
STM32F103xB 宏:为了告诉 STM32HAL 库,我们使用的芯片类型是 STM32 型号是小容量的,使 STM32HAL 库根据我们选定的芯片型号来配置。
点击编译出会错,此时删除main.c中“#include "stm32f1xx_nucleo.h"”,我们不需要引入ST官方套件的相关代码。再次点击编译提示成功。
关键字:STM32 手动 创建工程 HAL库
引用地址:
STM32手动创建工程-HAL库,超详细
推荐阅读最新更新时间:2024-11-09 14:07
多功能STM32开发工具STM32CubeIDE使用指南
工欲善其事,必先利其器。 STM32Cube生态系统是ST为STM32开发者打造的软件生态,是嵌入式开发的利器。 为提升功能丰富且高能效的STM32系列微控制器的易用性,2019年,意法半导体在STM32Cube软件生态系统中增加了一个免费的多功能STM32开发工具:STM32CubeIDE。 为了和商用集成开发环境(IDE)工具一样好用,STM32CubeIDE充分发挥了意法半导体2017年收购的嵌入式开发工具厂商Atollic的技术优势。这套IDE软件采用行业标准的开放式许可条款,为简化和加快基于STM32的嵌入式设计,新增了STM32专用功能,包括功能强大的STM32CubeMX微控制器配置和项目管理工具。 通过整合
[单片机]
在linux环境下如何进行stm32的开发建议
工具链一般用gcc-arm-none-eabi,可以用包管理装,也可以到arm官网下,也可以自己编译,毕竟gnu源有这个配置。 纯用命令行的话,cubemx可以生成makefile工程,改下编译器路径就能make,会生成bin文件。 用IDE的话,可以用eclipse,参考wiced sdk。 可以用vscode,体验要优于sublime。网上搜搜怎么配环境,主要就是设置工具链的目录。 烧录程序,如果烧的是bin的话需要一个烧录程序。用jlink的话可以用segger官网下的jlinkexe工具。用stlink的话可以用github上的stutils什么的。用cmsis-dap或者ft2232的话就只能配openo
[单片机]
STM32 SysTick秒用
这里针对的是无操作系统的情况下的使用。之前一直想利用systick既实现记录系统运行时间又能够精确实现微秒延时的功能,如果将SysTick的定时器的定时中断时间设置为1us,这在有些情况下会导致死机的问题。这样的话就无法利用systick来实现us延时函数了。 利用SysTick实现1ms定时中断,us延时函数可以利用SysTick的寄存器来运算得到精确的延时函数,具体实现如下: 头文件: #ifndef __SYSTICK_H #define __SYSTICK_H #ifdef __cplusplus extern C { #endif /* Includes -----------------------
[单片机]
STM32之学习笔记--串口通信
在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。 b) 初始化函数定义: void USART_Configuration(void); //定义串口初始化函数 c) 初始化函数调用: void UART_Configuration(void); //串口初始化函数调用 初始化代码: void USART_Configuration(void) //串口初始化函数 { //串口参数初始化 USART_InitTypeDef USART_InitStructure; //串口设置恢复默
[单片机]
009_STM32程序移植之_内部falsh
1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC--------------------VCC GND-------------------GND PA9--------------------RXD PA10-------------------TXD STM32 本身没有自带 EEPROM,但是 STM32 具有 IAP(在应用编程)功能, 所以我们可以把它的 FLASH 当成 EEPROM 来使用。本章,我们将利用 STM32 内部的 FLASH实现数据的存放,通过串口打印显示存放数据,不过我们是将数据直接存放在 STM3
[单片机]
如何开发功能齐全的QSPI驱动
1. 摘要 本篇笔记主要介绍,如何开发稳定可靠,功能齐全的QSPI驱动。 2. 准备工作 1, IAR 8.32.1 2, STM32Cube_FW_H7_V1.6.0 3. QSPI简介 4. QSPI驱动 在项目的开发中,我们经常会使用外挂Flash在做一些应用,而STM32H743带QSPI接口,可以用来外挂QSPI Flash,在之前的推送中我们以winbond华邦的W25Q256为例给大家说明了下QSPI的操作,借助ST的HAL库例程可以快速验证,不同型号的QSPI Flash会有一些参数和命令区别,大家应用时候要注意,例如美光和华邦的有的命令码就不同。ST的驱动里STM32H743的评估板是以美光的MT25T_QL
[单片机]
基于STM32和W5100的SNTP服务器设计
0 引言 随着信息技术和网络技术的飞速发展,网络互连已经渗透到国民经济的各行各业。而网络时间同步也越来越受到重视,特别是局域网时间同步在国家安全和国民经济的诸多领域(如国防军工、电信网、金融业、交通运输、电子商务和电力系统等部门)越发不可或缺。随着嵌入式技术的发展,嵌入式与网络时间同步技术的结合,无疑具有良好的发展前景。 1 方案设计 目前网络授时的实现方法有很多种,本文采用自行设计的嵌入式系统并在上面实现SNTP协议。从而完成网络时间的同步。其系统框图如图l所示。 本系统采用C/S模型,分为网络授时同步服务器和客户端两大部分,本文主要对网络授时服务器部分进行研究。 在网络授时同步服务器中,
[单片机]
stm32初始化流程图解析
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。 stm32参数: 12V-36V供电 兼容5V的I/O管脚 优异的安全时钟模式 带唤醒功能的低功耗模式 内部RC振荡器 内嵌复位电路 工作温度范围:-40°C至+85°C或105°C stm32特点: 内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。 存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。上电
[单片机]