stm32软件安装以及创建工程

文章目录

  • 前言
  • 一、软件安装
    • 软件破解
  • 二、创建工程
  • 三、创建项目
    • 创建组
    • 配置启动文件
      • 添加到组
    • 为项目添加头文件路径
    • 创建源文件(main函数文件)
    • 使用寄存器配置引脚
      • 拼接好STLINK与stm32最小电路板的接线
      • 编写程序
        • 配置STLink下载程序
        • 配置寄存器
        • 配置13号端口(信号灯的端口)
        • 配置输出端口寄存器
    • 使用库函数
      • 配置库函数文件
      • 使用库函数点亮信号灯
        • 配置定时器
        • 然后是配置端口模式
        • 最后一步就是电源供给
        • 具体代码如下
    • 启动文件的分类
  • 总结新建工程步骤


前言

基于bilibili 江协科技《STM32入门教程-2023版 细致讲解 中文字幕》的学习记录,资料资源:https://jiangxiekeji.com/download.html,以下操作大多基于此资料。

一、软件安装

需要安装keil5 MDK,老方法进入官网点击download
在这里插入图片描述
选择MDK版本
在这里插入图片描述
然后注册信息自己填写

软件破解

使用管理员身份打开keil5
选择file中的license management,复制如图id
在这里插入图片描述
打开破解程序keygen,按照如图顺序,把刚刚复制的id放入cid中,点击generate,3指向的框中就会产生一串字符串,复制这串字符串。

注意:此软件可能会被识别为病毒,可以在windows安全中心允许这个程序行为即可。

在这里插入图片描述

粘贴到如图框中点击add lic,上面会显示相关信息。
在这里插入图片描述
这样软件就破解成功了。

二、创建工程

打开keil5,点击pack installer
在这里插入图片描述
选择需要的包内容,双击下载,下面会显示进度条,速度比较缓慢。
在这里插入图片描述
这样就可以创建stm32f103c8的项目了
在这里插入图片描述

``

三、创建项目

由于stm32有大量的寄存器,操作起来十分复杂,所以采用基于st公司所创建的基本库,通过调用函数来操作。

创建组

右键Target 1,点击Add Group,然后单击两下刚刚建的组修改名字。
在这里插入图片描述
在这里插入图片描述

配置启动文件

以下基于资料文件的路径

注意:先创建一个与项目同级目录下的Start文件夹,保存这些文件,再将这些文件加入到Start组,后面的同理

复制目录:STM32资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件(选择需要的型号加入Start组,这里选择md.s结尾的文件其他的不需要加入组)和STM32资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录如下文件(图二)和STM32资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中两个内核文件 到工程的Start组(自定义名称)中,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加到组

右键组,加入外部文件,选择相应文件add即可
在这里插入图片描述

在这里插入图片描述

为项目添加头文件路径

不然会找不到头文件而使用不了。
在这里插入图片描述
选择你刚刚创建的Start文件夹即可
在这里插入图片描述

创建源文件(main函数文件)

同样,在项目同级目录下创建User文件,并在keil中创建User组,名称可自定义,创建的main.c文件放在User文件中,再加入User组。
在这里插入图片描述

使用寄存器配置引脚

拼接好STLINK与stm32最小电路板的接线

在这里插入图片描述
然后插入电脑,如下则成功
在这里插入图片描述

编写程序

配置STLink下载程序

在项目配置中选择STLINK debugger
在这里插入图片描述
然后点旁边的settings
在这里插入图片描述
编译之后,点击download即下载程序
在这里插入图片描述
下载成功后,信号灯就不会再闪烁了
在这里插入图片描述

配置寄存器

先配置时钟寄存器,通过参考手册查看使能信息
在这里插入图片描述
在这里插入图片描述
所以其他位全0,第四位置1,打开IO端口C时钟使能。
即 RCC->APB2ENR = 0x00000010;

配置13号端口(信号灯的端口)

在这里插入图片描述
在这里插入图片描述
如上图配置,即 GPIOC->CRH = 0x00300000;

配置输出端口寄存器

低电平点亮,如下图将13位配置为低电平
在这里插入图片描述
所以直接给全0信号灯就会亮,即 GPIOC->ODR = 0x00000000;
然后编译下载程序
在这里插入图片描述

使用库函数

配置库函数文件

项目同级目录下创建Library文件夹来存放库函数文件,并在keil创建Library组,将 STM32资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src 中所有文件复制粘贴到刚刚创建的Library文件夹中,然后添加到Library组中
然后将 STM32资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0.zip\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 中如下文件复制粘贴到User文件夹,并加入到User组中
在这里插入图片描述
最后还需要一个宏定义(USE_STDPERIPH_DRIVER),并添加所有的头文件目录
在这里插入图片描述

使用库函数点亮信号灯

和寄存器配置顺序一样

配置定时器

函数定义如下,参数分别为选择寄存器、是否使能
在这里插入图片描述

然后是配置端口模式

函数定义如下
在这里插入图片描述
第一个参数选择要配置的端口,第二个参数需要是一个结构体,需要我们自己定义,使用他给的类型GPIO_InitTypeDef GPIO_InitStructure;这种方式定义结构体,然后使用结构体的成员方式进行配置,三个成员变量定义如下
在这里插入图片描述
成员的值如下
选择端口:13
在这里插入图片描述

选择频率在这里插入图片描述
选择模式:通用推挽输出
在这里插入图片描述
给成员赋值之后就可以使用GPIO_Init函数配置端口了。

最后一步就是电源供给

高电平供给
在这里插入图片描述
低电平供给
在这里插入图片描述

具体代码如下
#include "stm32f10x.h"                  // Device headerint main(){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_13);// GPIO_ResetBits(GPIOC,GPIO_Pin_13);while(1){}return 0;
}

启动文件的分类

根据型号用于选择启动文件
在这里插入图片描述


总结新建工程步骤

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

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

相关文章

奋斗与诗意的三纲八目

人生得有一个基调、总的宗旨、指导思想、根据、根本。当人做出一个重大决定时,绝非偶然,一定是背后的宗旨在起作用。你每天起床的动力,是否能热情洋溢地做事,也是这个宗旨在起作用。念天地之悠悠独怆然而涕下,忧思难忘…

云计算运营模式介绍

目录 一、云计算运营模式概述 1.1 概述 二、云计算服务角色 2.1 角色划分 2.1.1 云服务提供商 2.1.2 云服务消费者 2.1.3 云服务代理商 2.1.4 云计算审计员 2.1.5 云服务承运商 三、云计算责任模型 3.1 云计算服务模式与责任关系图 3.2 云计算服务模式与责任关系解析…

vue3 之 Pinia数据持久化

持久化用户数据说明 1️⃣用户数据中有一个关键的数据叫做token(用来标识当前用户是否登陆),而token持续一段时间才会过期 2️⃣Pinia的存储是基于内存,刷新就丢失,为了保持登陆状态就要做到刷新不丢失,需要…

肯尼斯·里科《C和指针》第13章 高级指针话题(1)进一步探讨指向指针的指针变量的高级声明

13.1 进一步探讨指向指针的指针 上一章使用了指向指针的指针,用于简化向单链表插入新值的函数。另外还存在许多领域,指向指针的指针可以在其中发挥重要的作用。这里有一个通用的例子: 这些声明在内存中创建了下列变量。如果它们是自动变量&am…

问题:必须坚持以中国式现代化推进中华民族伟大复兴,既不走封闭僵化的老路,也不走 #媒体#知识分享

问题:必须坚持以中国式现代化推进中华民族伟大复兴,既不走封闭僵化的老路,也不走 A、中国特色社会主义道路 B、改革开放之路 C、改旗易帜的邪路 D、中国式现代化之路 参考答案如图所示

Linux 36.2@Jetson Orin Nano基础环境构建

Linux 36.2Jetson Orin Nano基础环境构建 1. 源由2. 步骤2.1 安装NVIDIA Jetson Linux 36.2系统2.2 必备软件安装2.3 基本远程环境2.3.1 远程ssh登录2.3.2 samba局域网2.3.3 VNC远程登录 2.4 开发环境安装 3. 总结 1. 源由 现在流行什么,也跟风来么一个一篇。当然&…

RabbitMQ的延迟队列实现[死信队列](笔记一)

关于死信队列的使用场景不再强调,只针对服务端配置 注意: 本文只针对实现死信队列的rabbitMQ基本配置步骤进行阐述和实现 目录 1、docker-compose 安装rabbitMq2、查看对应的版本及插件下载3、安装插件和检测 1、docker-compose 安装rabbitMq a、使用d…

IT行业有哪些证书含金量高呢?

目录 引言: 一、 计算机网络类证书 二、 数据库管理类证书 三、 安全与信息技术管理类证书 四、 编程与开发类证书 五、 数据科学与人工智能类证书 六、结论: 悟已往之不谏,知来者犹可追 …

备战蓝桥杯---动态规划(基础3)

本专题主要介绍在求序列的经典问题上dp的应用。 我们上次用前缀和来解决,这次让我们用dp解决把 我们参考不下降子序列的思路,可以令f[i]为以i结尾的最大字段和,易得: f[i]max(a[i],a[i]f[i-1]); 下面是AC代码: #in…

猫头虎分享已解决Bug || JavaScript语法错误(Syntax Error):SyntaxError: Unexpected token

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

机器学习:分类决策树(Python)

一、各种熵的计算 entropy_utils.py import numpy as np # 数值计算 import math # 标量数据的计算class EntropyUtils:"""决策树中各种熵的计算,包括信息熵、信息增益、信息增益率、基尼指数。统一要求:按照信息增益最大、信息增益率…

多线程JUC:线程池原理、自定义线程池详细解析

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:多线程&JUC:等待唤醒机制(生产者消费者模式) 📚订阅专栏:多线程&…