初识STM32:寄存器编程 × 库函数编程 × 开发环境

news2024/9/21 16:36:50

STM32的编程模型

假如使用C语言的方式写了一段程序,这段程序首先会被烧录到芯片当中(Flash存储器中),Flash存储器中的程序会逐条的进入CPU里面去执行。

CPU相当于人的一个大脑,虽然能执行运算和执行指令,但不能去做一些具体的任务(比如大脑想看到某样东西,它需要眼睛;想要说话,就需要嘴巴)。对于CPU同理,想要完成某个具体的功能,就需要借助CPU周围的一些模块(模块负责执行一些具体的任务)。

故程序的目的就是控制CPU周围的模块,去执行一些具体的功能。


寄存器和寄存器编程

寄存器:由若干个比特位组成,读写这些比特位可以控制这些模块。CPU通过控制寄存器,来操控这些模块,从而来实现具体功能。

想对芯片周围的这些模块进行编程(使用模块),就需要操作模块的寄存器组,直接去读写操作寄存器的代码,为寄存器编程

假设CPU周围有一个模块,叫做GPIO,可以管理芯片周围的16个引脚。其模块内部有寄存器组,包含两个寄存器:输入寄存器(IDR)和输出寄存器(ODR),均有16个比特位,对应GPIO所管理的16个引脚。则可对其进行寄存器编程

int main()
{
    GPIO->ODR = 0xFFFF; //所以引脚输出高电平
    GPIO->ODR = 0x0000; //所有引脚输出低电平
    GPIO->ODR |= 0x01;  //1号引脚输出高电平
    GPIO->ODR &= ~0x01; //1号引脚输出低电平
}

这种寄存器的编程方式比较繁琐。


库函数编程

将操作寄存器的代码包装成一条条函数,在实际编程中,直接调用这些包装好的函数来控制寄存器。

标准库:由ST官方提供的库,对寄存器的简单封装。

如下所示,为库函数编程:

void GPIO_Init(...);
void GPIO_Write(...);
void GPIO_WriteBit(...);
void GPIO_SetBits(...);
void GPIO_ResetBits(...);

int main()
{
    GPIO_Write(...,0xFFFF); //所以引脚输出高电平
    GPIO_Write(...,0x0000); //所以引脚输出低电平
    GPIO_WriteBit(...,1,1); //1号引脚输出高电平
    GPIO_WriteBit(...,1,0); //1号引脚输出低电平
}

安装DFP

即安装器件支持包,因为现在的ARM的芯片型号非常多,升级换代速度也快,新型号的芯片也是不断推出,而Keil5软件不能出一款芯片就升级一下软件,而且同时支持所有型号的芯片。

Keil5之后,芯片的器件支持包就被独立出来了,开发哪种芯片安装对应支持包就行了。若没有安装支持包,在新建工程时,是不会出现相应的器件型号。


 安装ARMCC编译器

虽然Keil5是集成开发环境,具备编译器的功能。但我们的标准库是一个比较古老的库,对于新版的Keil5软件来说,不支持标准库的编译,需要安装一个旧版的编译器,即ARMCC编译器,来让我们的标准库能够在Keil5软件上跑起来。

可在软件中查看是否安装ARMCC:


安装STLINK驱动

由ST公司设计的一种硬件的调试器,负责将我们的电脑与嵌入式硬件连接起来,调试器在中间负责通信,这样我们可以通过电脑去控制单片机运行,从而查看程序是否达标或存在BUG。

安装驱动一般流程:

先将STLINK插在电脑上,然后在设备管理器中可以看到STLINK在"其他设备"的列表上。如果其图标带有感叹号,就说明电脑上目前没有安装STLINK驱动(反之则已经安装过STLINK驱动)。

STLINK驱动如下所示:

 安装成功后,可在"通用串行总线设备"里看到STM32 STLINK。


 

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

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

相关文章

C++视觉开发 五.答题卡识别

目录 一.单道题目的识别 1.基本流程及原理 2.实现程序 二.整张答题卡原理 1.图像预处理 Canny 边缘检测 2.答题卡处理 cv::warpPerspective cv::getPerspectiveTransform 3.筛选出所有选项 cv::boundingRect 4.将选项按题目分组 三.完整实现程序 1.实现代码 2.结…

支付宝沙箱对接(GO语言)

支付宝沙箱对接 1.1 官网1.2 秘钥生成(系统默认)1.3 秘钥生成(软件生成)1.4 golan 安装 SDK1.5 GoLand 代码1.6 前端代码 1.1 官网 沙箱官网: https://open.alipay.com/develop/sandbox/app 秘钥用具下载: https://ope…

MSPM0G3507——超声波模块移植代码

超声波没有做单独的代码文件 直接自己创建.c.h文件,将这些复制粘贴即可,然后进行SYSCFG配置按照这些配置即可,有啥问题直接评论区提出,如果看不懂的话评论区说一下,再出讲解 超声波.c文件 #include "ti_msp_dl…

线程并发库复习

1.进行和线程 什么是进程:进程是内存分配的基本单位,它是程序执行时的一个实例,会被放到进程就绪队列,等进程调度器选择它,给它时间片,它才会运行。在java中启动进程,main,test&…

【无标题】维度模型:

维度模型 基本概念维度模型中设计表主要分为2大类事实表维度表 基本概念 事实 :行为所产生的事情(数据) 维度:分析数据的角度(状态) 维度模型中设计表主要分为2大类 事实表:用于保存行为所产生…

实战 | YOLOv8使用TensorRT加速推理教程(步骤 + 代码)

导 读 本文主要介绍如何使用TensorRT加速YOLOv8模型推理的详细步骤与演示。 YOLOv8推理加速的方法有哪些? YOLOv8模型推理加速可以通过多种技术和方法实现,下面是一些主要的策略: 1. 模型结构优化 网络剪枝:移除模型中不重要的神经元或连接,减少模型复杂度。 模型精…

【通信协议】八、CDL(Caterpillar Data Link)协议解析

1、协议简介 CDL(Caterpillar Data Link)是caterpillar的通信协议,该品牌发动机ECM与各控制单元进行通信时,采用基于RS-485的物理层规范进行开发的CDL协议进行通信; 2、物理层 信号传输方式:差分信号(通过两条线的电压差识别逻辑0或逻辑1) 通信方式:半双工通信(只允…

iPhone短信被拉黑了怎么恢复?4步快速移除黑名单

在日常使用iPhone的过程中,可能会因为误操作或其他原因将某些联系人拉入黑名单,导致无法接收他们发送的短信。那么,iPhone短信被拉黑了怎么恢复? 其实,只需要简单的4步操作,就能快速将联系人移出黑名单&am…

Windows 安装 PyCharm

PyCharm下载 PyCharm官网:http://www.jetbrains.com/pycharm/download/ Professional 专业的,Community 社区,这里我们点击Community下的 DOWNLOAD下载。 PyCharm 安装使用 PyCharm是一种Python IDE,带有一整套可以帮助用户在使…

猎人维修大师免狗版

技术文档摘要 标题: 多功能维修工具集合概述 摘要: 本文档提供了一组多功能维修工具的概述,这些工具旨在为专业技术人员提供便利,以执行设备维修和软件解锁等任务。文档列出了各个工具的主要功能和应用场景。 关键词&#xff1…

【最新版】手把手Claude 3.5 Sonnet 详细步骤注册方法!

目录 01 Claude 3.5 Sonnet 是什么 02 Claude 3.5 Sonnet 注册方法 Step1:注册 Wildcard Step2:注册Claude3.5 Step3:接收并输入验证 03 使用Claude 3.5 Sonnet 04 升级Claude 3 Opus 05 结语 01 Claude 3.5 Sonnet 是什么 蛰伏了三…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【签名/验签介绍及算法规格】

签名/验签介绍及算法规格 为实现数据完整性保护和防抵赖,可使用生成/导入的密钥,对数据进行签名验签操作。 支持的算法 以下为密钥签名/验签支持的规格说明。 面向OpenHarmony的厂商适配密钥管理服务规格分为必选规格和可选规格。必选规格为所有厂商…

苍穹外卖--启用和禁用员工

实现 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeePageQueryDTO; import com.sky.entity.Employee; import com.sky.properties.JwtPro…

赛力斯25亿收购华为“问界”商标,估值102亿!

近日赛力斯发布公告,拟收购华为持有的商标及知识产权,华为其下属企业持有的九百一十九项商标权,其中七百四十项商标权已获授权,剩余商标权正在申请中,尚未获得商标注册证书,持有的商标及知识产权无形资产评…

Skywork-MoE,1460亿MoE模型,采用MoE Upcycling技术

Skywork-MoE,1460亿MoE模型,采用MoE Upcycling技术 原创 每日发现最新LLM 机器之心SOTA模型 2024年06月04日 18:27 北京 🏆 基座模型 ①项目名称:Skywork-MoE ★Skywork-MoE是一款千亿模型,具有1460亿参数、16个专家…

Java-Redis-Clickhouse-Jenkins-MybatisPlus-Zookeeper-vscode-Docker-jdbc-xxljob

文章目录 Clickhouse基础实操windows docker desktop 下载clickhousespringboot项目配置clickhouse Redis谈下你对Redis的了解?Redis一般都有哪些使用的场景?Redis有哪些常见的功能?Redis支持的数据类型有哪些?Redis为什么这么快…

初识CPlusPlus

前言 也是好久没写博客了,那些天也没闲着,去练题去了。实际上练题也可以写练题的博客,但是觉得太简单了些,于是就没有继续写下去。如今又回来写博客,是因为有整理了新的知识C。内容不算多,大多数都是书本上…

评估测试用例有效性 5个方面

评估测试用例的有效性是确保软件测试活动能够达到预期目标的关键步骤,有助于测试团队优化测试计划,提高测试效率,减少返工,节省成本。如果缺乏对测试用例的有效性评估,可能会导致测试用例无法覆盖关键功能点&#xff0…

微服务 | Springboot整合Seata+Nacos实现分布式事务

1、分布式事务概念说明 分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如:用户注册…

一站式短视频矩阵开发,高效托管!

短视频矩阵系统源码SaaS解决方案提供全面的开发服务,包括可视化视频编辑、矩阵式内容分发托管以及集成的多功能开发支持。 短视频矩阵:引爆您的数字营销革命 短视频矩阵系统是一套多功能集成解决方案,专为提升在短视频平台上的内容创作、管理…