从头开始写STM32F103C8T6驱动库(一)——STM32CubeMX创建并调整工程结构

系列文章目录

Github开源地址
从头开始写STM32F103C8T6驱动库(一)——STM32CubeMX创建并调整工程结构
从头开始写STM32F103C8T6驱动库(二)——编写系统初始化程序,配置时钟树
从头开始写STM32F103C8T6驱动库(三)——编写GPIO驱动
从头开始写STM32F103C8T6驱动库(四)——编写延时函数,详解Systick

文章目录


前言

由于本人是一名智能车退役选手,实在用不惯STM32官方的HAL库,所以就想着自己写一个类似智能车驱动的驱动库,方便后期项目开发。
本次项目全开源,大家可以自行增删改,但要写好更新日志哦。


大家没有软件的可自行到stm32官方下载工具:https://www.st.com/en/development-tools/stm32cubemx.html

1.新建工程

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

搜索stm32f103c8,双击STM32F103C8

在这里插入图片描述

打开之后直接生成工程文件即可,我们自己配置工程文件

在这里插入图片描述

我这里工程起名为STM32F103_Drive,大家自己可以随便起

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

再点击这里生成工程文件即可

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

生成完成之后大家打开工程文件夹,会生成在大家刚刚填写的那个路径下,之后STM32CubeMX就可以关闭了

在这里插入图片描述

我们打开Keil工程

在这里插入图片描述

先编译一下看看,如果此时你的工程没有问题,那么就可以开始了。

2.移除官方HAL库

由于是自己写驱动库,不调用官方的HAL库,所以移除HAL库
在这里插入图片描述

删除工程下Drivers文件夹下STM32F1xx_HAL_Drivers文件夹

在这里插入图片描述

回到工程点击这里

在这里插入图片描述

删除HAL库文件

在这里插入图片描述

我们再编译一下工程,发现报了很多错,但此时不要慌这很正常。

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

我们将main.c,main.h与文件内容清空,只保留一下必要的内容就可以了。

在这里插入图片描述

再次编译发现还有一个错,双击该报错,发现在stm32f1xx.h文件这里引入了一个HAL库的头文件,因为STM32CubeMX创建的工程默认使用HAL库的。

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

我们将HAL库宏定义删除

在这里插入图片描述

再次编译我们发现还是有错误,第一个错误是因为HAL库的心跳信号是由Systick定时器来产生的,所以在Systick的中断服务函数中,我们将其删除即可。

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

第二个错误,我们将工程目录下Core\Src\stm32f1xx_hal_msp.c和Core\Inc\stm32f1xx_hal_conf.h"删除

在这里插入图片描述

再从工程当中移除该文件

在这里插入图片描述

再次编译发现0 Error(s), 0 Warning(s).

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

我们再移除HAL库的头文件

3.调整工程结构

在这里插入图片描述
将STM32CubeMX工程文件删除

在这里插入图片描述

我们将工程文件下

Drivers\CMSIS\Device\ST\STM32F1xx\Include的
stm32f1xx.h
stm32f103xb.h
system_stm32f1xx.h
移动到Core\Inc文件夹下

在这里插入图片描述

删除Drivers\CMSIS文件夹,在Drivers创建Inc,Src文件夹

在这里插入图片描述

配置头文件路径将其修改为

在这里插入图片描述

点击OK保存即可

在这里插入图片描述

我们再调整一下工程文件结构,将其修改为

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

这样属于我们自己的一个全新的工程库就已经创建完成了

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
初始化STM32F103C8T6的SPI接口的步骤如下: 1. 首先,在STM32CubeMX创建一个新的工程,并选择你的目标芯片型号为STM32F103C8T6。 2. 在Pinout & Configuration选项卡中,选择SPI的相关引脚。你需要选择SCK引脚、MISO引脚、MOSI引脚和NSS引脚(如果需要)来配置SPI接口。 3. 在Configuration选项卡中,找到SPI配置。你可以设置SPI的工作模式(主模式或从模式)、数据大小、时钟极性(CPOL)和时钟相位(CPHA)等参数。 4. 在Initialization Code选项卡中,点击"GENERATE CODE"按钮来生成初始化代码。 5. 根据生成的代码,将初始化SPI接口的代码添加到你的工程中。这些代码通常会包括RCC时钟使能、GPIO引脚配置、SPI初始化和使能等步骤。 请参考以下示例代码来初始化SPI接口: ```c // 引用 Github开源地址 从头开始STM32F103C8T6驱动(一)——STM32CubeMX创建调整工程结构 取自《STM32F10xxx闪存编程手册》<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [从头开始STM32F103C8T6驱动(二)——编系统初始化程序,配置时钟树](https://blog.csdn.net/Pluto0617/article/details/122615354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值