当前位置: 首页 > news >正文

学习Stm32 的第一天

第一:首先就是关于软件的安装

32的软件是keil MDK,并不是之前的Keil C51 ,然后关于后面激活的那些东西网上找就好了。

第二:软件的配置

首先要将支持包安装,不然在创建项目的时选不到芯片。

Keil5 MDK\支持包  ,其中的F1系列(以后是什么就是那个系列)

随后双击安装即可。然后这是离线安装,也可以在线安装,这里就要先不讲述了。

最后就是STLink驱动,在安装目录keil\ARM\STLink\USBDriver中有

是哪个系统选哪个就可以了。其他驱动直接在设备管理器里看有感叹号的地方,点击他会提示你安装。

第三:创建项目以及导入标准库函数

1.先创建好自己的文件夹,然后进入Keil中创建新的项目

随后在创建一个文件夹以存放本次的代码(名字随意即可)。

芯片型号选择STM中的STM32F103C8

添加必要文件

1.起动文件(stm32就是从启动文件开始执行的),固件库->STM32F10x_StdPeriph_Lib_V3.5.0->Libraries->CMSIS->CM3->DeviceSupport->ST->STM32F10x->startup->arm

上面的是文件的路径

然后把上面这些文件都复制下来。之前创建的项目文件夹里面已经自动生成一些东西了

在之前创建的项目文件夹创建一个Start文件夹,用于存放启动文件。然后还需要在其中放入外设寄存器描述文件(和51单片机的头文件性质一样)和内核寄存器描述文件。分别在之前的STM32F10x中的

和CM3下的CoreSupport文件夹里面

将上述的文件全部复制在statr文件夹中,启动文件就配置完成了。

最后将它复制在工程中就大功告成了。

在Keil中新建组,在把名字改成Start

再右键start导入已存在的文件(刚才start中的文件中的所有.c .h文件和startup_stm32f10x_md.s文件导入即可)

然后打开工程选项(魔术棒)->C/C++选项中include paths,把start的路径加进来

注:选择路径时一定要点进start文件夹里面一层去。

然后按照刚才的步骤新建一个User文件夹,里面放入mian.c文件

再将调试工程里面的Debug中的Use改为ST-Link Debugger。

随后添加库函数

先创建一个Library文件夹用来存放,在固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src中全部复制过去

以及inc文件夹中的头文件也全部复制过来

随后在keil中添加Library以及其中的文件

最后还需要将三个文件加入User文件夹中,就是 固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中的

图中的三个文件弄在工程中即可。

最后还差一个宏定义,先鼠标右键导入头文件

随后右键头文件打开

最底部8296行  USE_STDPERIPH_DRIVER  这一句

加在调试工程中的C/C++中Define这一行

最后还是将路径加入即可

这个小箱子的按钮可以移动目录的位置

我们可以将不用改的移动到最上方,这样比较好操作。

至此,stm32的标准库函数以及项目的创建完毕

注:main函数的最后一行必须留空(注释也不能有),否则调试会有一个警告。

这里就是以上全部内容了,视频是看的B站上江科大的(江协科技),资料也是它提供的,地址是:资料下载

Keil中的函数注释含义:

@brief <title>: 简要注释. 指该函数的简要介绍。

@param <name> <description>: 参数描述.

@retval <description>: 返回值描述.

@exception <name> <description>: 异常描述.

@see <name>: 参见. 具体用法详见 1.5.2

@see、@sa(参见) .@warning <text>: 警告.

@bug <text>: 警告.@name <title>: 组名. 用于给成员们分组, 既文档中Tasks区的子类别.

最后,如果你觉得这期对你有用,点个赞吧

http://www.dtcms.com/a/335970.html

相关文章:

  • 基于RK3588的微电网协调控制器:实现分布式能源的智能调控与优化运行
  • git stash临时保存工作区
  • 因果知识图谱:文本预处理的革命性突破
  • pytest中使用loguru的问题及解决
  • CF2121C Those Who Are With Us
  • Week 12: 深度学习补遗:RNN与LSTM
  • Vue 与 React 深度对比:设计哲学、技术差异与应用场景
  • Zemax 中的透镜设计 - 像差理论
  • Python | 解决 matplotlib 中文乱码
  • CentOS7安装部署GitLab社区版
  • 从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战
  • 深入浅出全面理解贝叶斯框架(Bayesian Framework)
  • jinja2模板引擎全面解析
  • Python3字符串全面指南:从基础操作到40个内建函数实战
  • Go语言并发编程 ------ 锁机制详解
  • 深入理解 uni-app 页面导航:switchTab、navigateTo、redirectTo、reLaunch 与 navigateBack
  • 2.4 双向链表
  • QUIC浅析
  • 流浪循环 全DLC(Rogue Loops)免安装中文版
  • 超市电商销售分析项目:从数据分析到业务决策
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十一节:网关安全-对称与非对称加密
  • PHP静态类self和static用法
  • 【计算机视觉与深度学习实战】04基于K-Means聚类的图像分割系统设计与实现
  • Java Stream 初解
  • 14.web api 5
  • 基于MATLAB多智能体强化学习的出租车资源配置优化系统设计与实现
  • 无人机视角乱堆垃圾垃圾场地分割数据集labelme格式1501张1类别
  • qt svg缺失元素, 原因是不支持 rgba
  • Android studio gradle有关设置
  • 图解 setTimeout + 循环:var 共享变量 vs let 独立绑定