stm32之手动创建keil工程--HAL库

        用CubeMx创建了好多stm32的工程,这里记录下手动创建keil工程的过程。

一、准备工作

1.1、下载对应的HAL库,

这里使用的是stm32f103c8t6, 下载地址stm32HAL库

在页面中输入对应型号点击进行二级页面进行下载


1.2、准备工程

各文件夹下具体操作如下:

Doc相关文档
DriversSTM32CubeF1-master\STM32CubeF1-master\Drivers\STM32F1xx_HAL_Driver、STM32CubeF1-master\STM32CubeF1-master\Drivers\CMSIS下的文件放入到该文件夹下,这里要进行文件删除,具体见下
IncSTM32CubeF1-master\STM32CubeF1-master\Projects\STM32F103RB-Nucleo\Templates\Inc下的文件放入到该文件夹下
MDK-ARMSTM32CubeF1-master\STM32CubeF1-master\Projects\STM32F103RB-Nucleo\Templates\MDK-ARM下的startup_stm32f103xb.s复制到该文件夹下
SrcSTM32CubeF1-master\STM32CubeF1-master\Projects\STM32F103RB-Nucleo\Templates\Src下的文件放入到该文件夹下

Drivers: 

        CMSIS:

        对于CMSIS,除了Include和Device 其它全部删除,对于Device/ST/STM32F1xx下的文件除了Include和Source其它全部删除,对于Source/Templates下只保留system_stm32f1xx.c

        STM32F1xx_HAL_Driver:

        除了Inc和Src,其它全部删除; Src 下删除文件名带有_ll_的.c文件,Inc下删除文件名带有_ll_的.h文件

二、创建工程,放在MDK-ARM目录下

选中对应的型号,这里是stm32f103c8

 选中CMSIS下的CORE(Cortex-M处理器支持)

 工程创建完成之后要对工程进行配置

 添加分组

Application/MDK-ARM

    

Application/User/Core

Drivers/STM32F1xx_HAL_Driver

Drivers/CMSIS

添加头文件

../Inc

../Drivers/STM32F1xx_HAL_Driver/Inc

../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy

../Drivers/CMSIS/Device/ST/STM32F1xx/Include

../Drivers/CMSIS/Include

添加宏

USE_HAL_DRIVER,STM32F103xB

编译报错

删除#include "stm32f1xx_nucleo.h"

再次编译,还是报错

删除template相关文件,在目录中也要删除

 

第三次编译,不报错,但是一堆警告

警告是由Keil 中ARM的编译器版本导致 ,默认是version 6, 

第四次编译,大功告成

调试器配置

三、点灯代码验证工程 

int main(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};HAL_Init();/* Configure the system clock to 64 MHz */SystemClock_Config();__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitStruct.Pin=GPIO_PIN_9; 	//PF9,10GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;  	//推挽输出GPIO_InitStruct.Pull=GPIO_PULLUP;          	//上拉GPIO_InitStruct.Speed=GPIO_SPEED_HIGH;    	 	//高速HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);/* Infinite loop */while (1){}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/96232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

破译滑块验证间距 破译sf顺丰滑块验证

废话不多说直接开干! from selenium import webdriver # 导入配置 from selenium.webdriver.chrome.options import Options import time from PIL import Image # 导入动作链 from selenium.webdriver.common.action_chains import ActionChains import random, st…

雷达电子箔条干扰和雷达诱饵简介

一、JAMMING 利用箔条、角反射器和诱饵进行机械干扰。 1、箔条(Chaff) 箔条是一种雷达干扰,在这种干扰中,飞机或其他目标散布一团薄薄的铝、金属化玻璃纤维或塑料,它们要么作为一组主要目标出现在雷达屏幕上,要么以多次回击淹没屏幕。 图1 箔条 2、箔条的雷达散射截面…

linux系统中三个重要的结构体

第一​:struct inode结构体 struct inode { struct hlist_node i_hash; struct list_head i_list; /* backing dev IO list */ struct list_head i_sb_list;​ //主次设备号 dev_t i_rdev;​ struct list_head i_devices; //用联合体是因为该…

uniapp 实现地图头像上的水波纹效果

最近实现了uniapp 地图头像水波纹的效果,话不多说,先来看看视频效果吧:链接 在这里具体的代码就不放出来了,还是利用了uniapp的 uni.createAnimation 方法,因为cover-view 不支持一些css 的动画效果,所以这…

如何使用百度“云一朵”来分析PDF文件

PDF 文件是一种常见的文件格式,用于存储文档、图像和其他内容。在许多情况下,我们需要对 PDF 文件进行分析,以提取其中的信息。百度“云一朵”提供了一个 PDF 分析 API,可以帮助我们轻松地对 PDF 文件进行分析。 在本博客文章中&…

基于Java的企业人事管理系统设计与实现(源码+lw+ppt+部署文档+视频讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

进程互斥的软件实现方法,硬件实现方法以及互斥锁

1.进程互斥的软件实现方法 1.单标志法 1.算法思想: 两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。 也就是说每个进程进入临界区的权限只能被另一个进程赋予。 2.例子 因此,该算法可以实现“同一时刻最多只允许一个进程访问临界区”。 3.主要…

Polygon Mide状态模型:解决状态膨胀,而不牺牲隐私和去中心化

1. 引言 前序博客有: Polygon Miden:扩展以太坊功能集的ZK-optimized rollupPolygon Miden zkRollup中的UTXO账户混合状态模型Polygon Miden交易模型:Actor模式 ZKP > 并行 隐私 在Polygon Miden交易模型:Actor模…

定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”

各位CSDN的uu们好呀,今天,小雅兰的内容是51单片机中的定时器以及按键控制LED流水灯模式&定时器时钟,下面,让我们进入51单片机的世界吧!!! 定时器 按键控制LED流水灯模式 定时器时钟 源代…

微服务技术栈-Docker应用部署

文章目录 前言一、数据卷二、Docker 应用部署1、MySQL部署2、Tomcat部署3、Nginx部署4、Redis部署5、Kafka部署 总结 前言 之前文章讲到过,docker运行程序的过程就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器,接下来我们将…

数据结构与算法-(7)---栈的应用-(4)后缀表达式求值

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

vue 使用 创建二维数组响应数据 渲染 echarts图标

目前我遇到的情况就是用动态的二维数组数据渲染echarts图标,我们从后端收到的接口一般是个一维数组,需要手动构建并且保证响应式。接下来我做了个案例 一、案例总逻辑 1. 先创建一个vue项目 2. 添加 echarts依赖 3. 模拟数据请求,构建二维数组…

DevicData-D-XXXXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

引言: 在数字时代,数据安全成为一项至关重要的挑战。DevicData-D-XXXXXXXX勒索病毒(以下简称DevicData病毒)是这场战斗中的新敌人,它能够以毁灭性的方式加密您的数据,迫使您在数据和时间之间做出艰难的选择…

59. 螺旋矩阵 II

题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入:n …

基于SpringBoot的房屋租赁管理系统的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 屋主管理 房屋信息管理 房屋租赁公告 租用订单管理 房屋信息管理 保洁管理 房屋信息 租用订单管理 取消订单管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 互联网发展至今,无论是其理论还是…

java Spring Boot在配置文件中关闭热部署

之前更大家一起搭建了一个热部署的开发环境 但是 大家要清楚一个情况 我们线上程序运行突然内部发生变化这是不可能的。 所以 他就只会对我们开发环境有效 是否开启 我们可以通过 application配置文件来完成 我这里是yml格式的 参考代码如下 spring:devtools:restart:enabled…

OpenWrt使用Privoxy插件修改UA

OpenWrt使用privoxy修改UA 1.安装privoxy插件 SSH连接到路由器 更新插件列表 update opkg安装插件 opkg install privoxy luci-app-privoxy luci-i18n-privoxy-zh-cn重启路由器 2.配置privoxy 打开配置页面 文件和目录 访问和控制 转发 杂项 日志 编辑配置 浏览器打开 …

代码随想录算法训练营第五十八天 | 动态规划 part 16 | 583. 两个字符串的删除操作、72. 编辑距离

目录 583. 两个字符串的删除操作思路思路2代码 72. 编辑距离思路代码 583. 两个字符串的删除操作 Leetcode 思路 dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。递推公…

云原生Kubernetes:简化K8S应用部署工具Helm

目录 一、理论 1.HELM 2.部署HELM2 3.部署HELM3 二、实验 1.部署 HELM2 2.部署HELM3 三、问题 1.api版本过期 2.helm初始化报错 3.pod状态为ImagePullBackOff 4.helm 命令显示 no repositories to show 的错误 5.Helm安装报错 6.git命令报错 7.CentOS 7 下git c…

volatile关键字使用总结

先说结论 1. volatile关键字可以让编译器层面减少优化,每次使用时必须从内存中取数据,而不是从cpu缓存或寄存器中获取 2. volatile关键字不能完全禁止指令重排,准确地说是两个volatile修饰的变量之间的命令不会进行指令重排 3. 使用volati…