STM32-新建工程(标准库)
目录
STM32F10x新建工程(标准库)
移植文件夹
新建工程
添加启动文件和必需文件
在工程中加载新添加的文件
在工程中添加文件路径
在工程中添加main函数
添加lib库
添加必需文件
添加宏定义
点亮LED(标准库)
STM32F10x新建工程(标准库)
移植文件夹
移植文件夹为STM32F10x_StdPeriph_Lib_V3.5.0。

新建工程
新建一个文件夹,存放工程。以桌面/STM32Program为例。
打开keil5--Project--New uVision Project--选择桌面的STM32Program文件夹--起工程名字:如STM32Program--保存。
keil5弹出选择芯片型号的页面--选择,如STM32F103VET6等。然后弹出芯片包管理页面,可以直接关闭。
到此,工程创建完毕。但该工程还无法使用,因为缺少了启动文件。
添加启动文件和必需文件
在移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm下选择复制对应的启动文件,如startup_stm32f10x_md.s。
在新建的工程目录STM32Program下新建start文件夹,粘贴刚刚复制的启动文件到start文件夹中。
回到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x目录下,复制stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h。
在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。
来到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport目录下,复制内核文件core_cm3.c、core_cm3.h。
在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。
在工程中加载新添加的文件
keil5上打开STM32Program工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。
双击左键默认的Groups下的Source Groups 1,修改名称为start。
然后在start的组下,添加新文件。依次添加:.s启动文件,core_cm3的源文件和头文件,除.s外的其余文件。
然后点击Manage Project Items的OK按钮即可。
在工程中添加文件路径
keil5上打开STM32Program工程,点击小控件:Options for Target 'xx'(控件图标为魔术棒)。
魔术棒的C/C++(AC6)选项-Include Paths,可看到包含路径框的右侧有个省略号的按钮,点击。
然后包含start文件夹路径,点击OK。
在工程中添加main函数
在工程目录下添加user文件夹,keil5打开工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。
添加新建组:user。点击OK。在keil5的工程中右击user文件夹,Add New Item to Group ‘user’,选择c文件,名称为mian,路径选择刚才创建的user文件夹。点击Add。
在mian.c中右键添加头文件,Insert '#include' file--stm32f10x.h。
然后写main函数。选择编译。
注意:user头文件路径别忘记添加。
#include "stm32f10x.h" // Device headerint main(void)
{while(1){}
}
编译后发现有很多错误,那是因为工程中keil5选用的是编译器6。
点击小控件:Options for Target 'xx'(控件图标为魔术棒)。在魔术棒的Target选项页中找到ARM Compiler,选择Use default compiler version 5。
再次编译,此时发现没有错误了。此时可以直接寄存器开发了,但如果需要标准库开发,还需要一些文件。
添加lib库
在STM32Program工程中新建lib文件夹。
然后打开STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver,该目录下有src文件夹和inc文件夹。把src文件夹和inc文件夹的所有文件复制到STM32Program工程的lib文件夹。
然后在keil5的工程中新建lib组加载新添加的文件和添加头文件路径。
添加必需文件
在STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下复制stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h文件。
粘贴到STM32Program工程的user文件夹。
然后在keil5的工程中user组加载新添加的文件和添加头文件路径。
添加宏定义
打开stm32f10x.h,光标去到文件最末尾,找到USE_STDPERIPH_DRIVER并复制。
然后点击魔术棒,来到C/C++选项页,在Define中粘贴USE_STDPERIPH_DRIVER。
点击OK。点击编译。没有错误了。此时已经创建好了。
点亮LED(标准库)
如LED为PC13。低电平点亮LED。
int main(void)
{GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_ResetBits(GPIOC, GPIO_Pin_13);while(1){}
}
相关文章:
STM32-新建工程(标准库)
目录 STM32F10x新建工程(标准库) 移植文件夹 新建工程 添加启动文件和必需文件 在工程中加载新添加的文件 在工程中添加文件路径 在工程中添加main函数 添加lib库 添加必需文件 添加宏定义 点亮LED(标准库) STM32F10x新…...
Android集成科大讯飞语音识别与语音唤醒简易封装
目录 一、语音唤醒部分 1、首先在科大讯飞官网注册开发者账号 2、配置唤醒词然后下载sdk 3、选择对应功能下载 4、语音唤醒lib包全部复制到工程目录下 5、把语音唤醒词文件复制到工程的assets目录 6、复制对应权限到AndroidManifest.xml中 7、唤醒工具类封装 二、语音识…...
【Linux】telnet命令使用
telnet命令 telnet命令用于使用telnet协议与另一台主机进行通信。如果在没有主机参数的情况下调用telnet,它将进入命令模式,由其提示(telnet>)指示。在这种模式下,它接受并执行下面列出的命令。如果使用参数调用它…...
VCG 标记使用(BitFlags)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于网格的每个单形,我们都有一个称为BitFlags的组件,该组件存储固定大小的32位向量,用于各种需求。管理这些标志的相关类:vcg::tri::UpdateFlags与vcg::tri::UpdateSelection。主要的标记有:删除标记、边界标记…...
Pandas中的Series(第1讲)
Pandas中的Series(第1讲) 🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…...
从手工测试进阶中高级测试?如何突破职业瓶颈...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、手工测试如何进…...
【链表Linked List】力扣-114 二叉树展开为链表
目录 题目描述 解题过程 官方题解 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应…...
Go (一) 基础部分4 -- 文件处理
一、文件基本介绍 1.1、打开一个文件 基本介绍:打开一个文件用于读取,如果操作成功,返回的文件对象的方法可用于读取文件数据。如果出错,错误底层类型是"*.PathError" func Open(name string) (*File, error) name stri…...
集合03 Collection (List) - Java
List ArrayListArrayList注意事项ArrayList底层操作机制-源码分析(重点) VectorVector基本介绍 ——Vector和ArrayList比较Vector底层结构和源码分析 LinkedList基本介绍LinkedList的底层结构和操作机制LinkedList的增删改查 ——LinkedList和ArrayList比…...
国产化软件突围!怿星科技eStation产品荣获2023铃轩奖“前瞻优秀奖”
11月11日,2023中国汽车供应链峰会暨第八届铃轩奖颁奖典礼在江苏省昆山市举行。怿星科技凭借eStation产品,荣获2023铃轩奖“前瞻智能座舱类优秀奖”,怿星CEO潘凯受邀出席铃轩奖晚会并代表领奖。 2023铃轩奖“前瞻智能座舱类优秀奖” 铃轩奖&a…...
如何解决Redis热Key问题?
Redis热点key是指访问频率较高的key,当大量的请求集中在一个或少数几个热点key上时,会导致这些key所在的Redis节点的CPU、内存和网络带宽等资源被大量消耗,影响Redis集群的整体性能和稳定性。 热点Key带来的问题 Redis节点负载过高࿱…...
react Hooks之useId
当我们在编写React组件时,有时需要为元素生成唯一的ID。这种情况经常出现在表单元素、标签和用于无障碍性的目的上。React提供了一个名为useId的自定义Hook,它可以帮助我们生成唯一的ID。 1、作用: 用于生成一个唯一的 ID。这个 ID 可以用于…...
2023年全球软件开发大会(QCon广州站2023)-核心PPT资料下载
一、峰会简介 本次峰会包含:泛娱乐时代的边缘计算与通讯、稳定性即生命线、下一代软件架构、出海的思考、现代数据架构、AGI 与 AIGC 落地、大前端技术探索、编程语言实战、DevOps vs 平台工程、新型数据库、AIGC 浪潮下的企业出海、AIGC 浪潮下的效能智能化、数据…...
MicroSD 卡 使用读卡器 读取速度测试
设备 - - 电脑为m.2固态硬盘 usb口为USB3.2 gen2接口(即支持1GB/s的接口) cpu: amd3600 测试方案1 直接MicroSD卡放入读卡器测试 38MB/s 从sd卡复制到本地C盘 测试方案2 MicroSD卡使用闪迪的SD卡套套上之后一起插入读卡器 76MB/s 从sd卡复制到本地C盘...
Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(一)
背景:之前的框架,Selenium是3.x版本,现在更新到4.15版本后,一些写法如find_element_by_xxx 不再支持,改为find_element(By.xxx)的方式,同时由于Unittest不如Pytest在执行方面灵活(比如只执行冒烟…...
LoRA(Low-Rank Adaptation)
LoRA(Low-Rank Adaptation) LoRA(Low-Rank Adaptation)是一种针对深度学习模型的参数调整方法,特别适用于大型预训练模型如GPT-3或BERT。它通过在模型的原有权重上添加低秩(low-rank)矩阵&…...
【银行测试】第三方支付功能测试点+贷款常问面试题(详细)
前言 1、第三方支付功能测试点 支付流程: 我们在测试一个功能时,需要先了解一下这个逻辑,而订单支付逻辑普遍都会有以下内容: 1)创建本地唯一订单号; 2)去调用支付,在支付平台生…...
前端:HTML+CSS+JavaScript实现轮播图2
前端:HTMLCSSJavaScript实现轮播图2 1. 和之前版本的区别2. 实现原理3. 针对上述的改进3. 参考代码 1. 和之前版本的区别 之前发布的那篇关于轮播图的文章在这:前端:HTMLCSSJavaScript实现轮播图,只能说存在问题吧!比…...
使用条件格式突出显示单元格数据-sdk
使用条件格式突出显示单元格数据 2023 年 12 月 6 日 根据数据值将视觉提示应用于特定单元格、行或列,从而更轻松地识别模式和趋势。 网格中的条件格式允许用户根据单元格或范围包含的数据将视觉样式应用于单元格或范围。它通过以数据驱动的方式突出显示关键值、异常…...
java面试题-Dubbo和zookeeper运行原理
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 分布式注册中心和服务调…...
3步实现跨平台文献管理效率跃升:WPS-Zotero开源工具深度应用指南
3步实现跨平台文献管理效率跃升:WPS-Zotero开源工具深度应用指南 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 在学术研究的数字化工作流中,如何解…...
DREAM3D:革新材料科学数据处理的开源框架
DREAM3D:革新材料科学数据处理的开源框架 【免费下载链接】DREAM3D Data Analysis program and framework for materials science data analytics, based on the managing framework SIMPL framework. 项目地址: https://gitcode.com/gh_mirrors/dr/DREAM3D …...
WarcraftHelper:让经典魔兽争霸3重获现代游戏体验的兼容性增强工具
WarcraftHelper:让经典魔兽争霸3重获现代游戏体验的兼容性增强工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为一款经典…...
保姆级教程:手把手教你用百度网盘下载并安装MATLAB R2024a(附详细步骤与激活文件替换指南)
MATLAB R2024a 从下载到激活的全流程避坑指南 第一次安装MATLAB就像在迷宫里找出口——下载链接在哪?ISO文件怎么处理?工具箱该选哪些?最要命的是那个神秘的Crack文件夹,稍有不慎就会卡在最后一步。作为过来人,我整理了…...
别再只用WPF自带的DragDrop了!手把手教你从零封装一个可拖拽合并数据的自定义控件
突破WPF原生拖拽限制:构建高定制化数据合并控件的实战指南 在构建现代企业级桌面应用时,拖拽交互已成为提升用户体验的关键要素。WPF虽然提供了基础的DragDrop API,但当我们需要实现类似看板系统中卡片合并、数据聚合等复杂交互时,…...
群晖搭建PS4 HEN服务器 | 无需联网的本地化解决方案
1. 为什么需要本地化HEN服务器? 如果你是一位PS4玩家,可能对HEN(Homebrew ENabler)这个名词并不陌生。它能让你的PS4运行自制软件、备份游戏存档,甚至解锁一些官方系统限制的功能。但传统方式需要PS4联网访问外部HEN服…...
GHelper:华硕笔记本性能优化与硬件控制的开源解决方案
GHelper:华硕笔记本性能优化与硬件控制的开源解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sc…...
Topit窗口置顶效率引擎:重新定义Mac多任务工作流
Topit窗口置顶效率引擎:重新定义Mac多任务工作流 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在信息爆炸的时代,我们每天需要处理的窗…...
Windows上的B站桌面客户端终极指南:解锁高效视频播放新体验
Windows上的B站桌面客户端终极指南:解锁高效视频播放新体验 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在为浏览器标签页过多而烦恼吗&#…...
量化交易回测工具革新:backtrader-pyqt-ui让策略开发效率提升10倍的实践指南
量化交易回测工具革新:backtrader-pyqt-ui让策略开发效率提升10倍的实践指南 【免费下载链接】backtrader-pyqt-ui 项目地址: https://gitcode.com/gh_mirrors/bac/backtrader-pyqt-ui backtrader-pyqt-ui是一款将Backtrader量化回测引擎与PyQt图形界面完美…...
