单片机-初识单片机(keil安装以及编写简单驱动)(一)

目录

一、嵌入式介绍

1.嵌入式系统:

2.嵌入式操作系统

3.单片机:

二、STM32F103ZET6简介

1.单片机的组成:

2.单片机外观:

3.ARM公司

4.ST公司--意法半导体

三、资料部分

1.安装工具:

2.破解软件:

3.安装PACK包:

四、如何编写简单的驱动

1.查看原理图

2.IO口的命名方式:

3.单片机资源概述:

4.寄存器

5.配置寄存器(CRL和CRH寄存器):

6.输出寄存器:

7.IO口输入输出模式

输出模式:

输入模式:

五、代码的编写

1.时钟的概念

2.配置PB5(寄存器)

1).打开B端口的时钟

2).配置PB5--通用推挽输出

3).输出高电平或者低电平

六、驱动安装:

七、寄存器操作的补充

GPIO_TypeDef内容:


一、嵌入式介绍

1.嵌入式系统:

以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。

2.嵌入式操作系统

嵌入式操作系统(Embedded Operating System,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统µC/OS-II、嵌入式Linux、Windows Embedded、VxWorks、Intewell操作系统 等,以及应用在智能手机和平板电脑的Android、iOS、华为鸿蒙等。

3.单片机:

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

单片机又称单片微控制器(MCU),它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。

mcu cpu gpu......

二、STM32F103ZET6简介

1.单片机的组成:

CPU--Cortex_M3(内核)

调试系统--下载 debug调试

内部总线--用于连接内核和外部设备

外设--串口 AD转换 定时器。。。。。

存储器--flash(闪存) ram 。。。。。

时钟和复位--提供工作频率,上电复位

IO--输入输出

2.单片机外观:

四周裸漏的金属状的引脚就是IO口

3.ARM公司

ARM公司是一个芯片公司

ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。

4.ST公司--意法半导体

https://www.st.com/content/st_com/zh/search.html#q=STM32-t=products-page=NaN

ST公司获得ARM公司的授权(钱),就可以使用ARM公司的不同架构下的处理器,拿过来之后,通过芯片制造厂商进行生产,最终得到了我们现在使用的芯片。

台积电 三星 联发科...... 制造芯片 4nm

三、资料部分

1.安装工具:

1.安装包直接双击安装即可(安装路径不要有中文)

中间会出现安装驱动,点击安装即可

安装完毕之后不要打开keil,如果打开了就直接×掉:

直接关闭即可。

安装完毕之后,如下所示:

2.破解软件:

以管理员权限打开KEIL5工具

点击注册管理选项:

打开注册机生成注册码:

温馨提示:打开注册机之前,把电脑声音关小点,这个软件自带音乐有点大

注册码:9WSKC-7V6GL-Z94G9-4JNYT-95MII-G6T57

将注册码复制到keil工具指定位置:

3.安装PACK包:

四、如何编写简单的驱动

1.查看原理图

LED_PB5--网络标号,在原理图中都是一一对应的

由原理图可得,

PB5输出高电平---LED灭

PB5输出低电平---LED亮

2.IO口的命名方式:

PB5---B端口中的第五个管脚

端口:是为了方便管理IO口,引入的一个概念,使用英文字母表示A B C D.......

每一个端口中有16个管脚,比如B端口,PB0--PB15

3.单片机资源概述:

单片机中总共的引脚是144个

但是可以让工程师编程使用的只有112个--成为IO口(既可以输入也可以输出)

供电--3.3V(单片机5V供电也没问题)

当前使用的是3.3V供电,编程中使用的都是二进制(计算机),两者如何对应????

单片机内部,使用的模数转换,将模拟信号转换为数字信号

高电平--(2.4--3.6V) 数字量--数字1

低电平--(0--1.4V) 数字量--数字0

4.寄存器

寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。 [1]

按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。

寄存器就是用来保存数据(二进制数据)

基本寄存器--用于配置或者控制

移位寄存器--负责数据的位移

我们需要使用到的寄存器:

5.配置寄存器(CRL和CRH寄存器):

6.输出寄存器:

7.IO口输入输出模式

输入输出方式总共是8种,我们需要根据不同的应用场景和外部设备合理的选择输入输出方式:

比如:LED灯--PB5

PB5配置为输出模式,但是应该选择哪一种???

输出模式:

通用推挽输出:在我们的单片机输出模式下,IO口既可以输出高电平也可以输出低电平

通用开漏输出:在我们的单片机输出模式下,IO口只可以输出低电平,无法输出高电平,需要外界上拉电阻才可以输出高电平

复用推挽输出:在我们的单片机输出模式下,除了简单的输出高低电平之外的功能(片上外设部分)

复用开漏输出:在我们的单片机输出模式下,除了简单的输出低电平之外的功能(片上外设部分)

片上外设:指的就是我们单片机芯片中自带的功能(除了简单的按位输出高低电平)

串口(USART) 定时器 SPI IIC......属于片上外设

片上外设查看以下手册:中文手册的20页

输入模式:

模拟输入:主要就是用于AD转换,将模拟量转数字量

浮空输入:在输入模式中,IO口既不连接上拉也不连接下拉,电平状态是不确定的

上拉输入:在输入模式中,IO口连接上拉,将电平拉高

下拉输入:在输入模式中,IO口连接下拉,将电平拉低

五、代码的编写

LED灯---PB5管脚

本质上配置PB5--如何配置?

根据以上原理图可得,PB5--输出模式,输出模式中有4种配置,到底用哪一种???

通用推挽输出(输出的是开关量,0或者1单个Bit)

PB5--通用推挽输出

1.时钟的概念

当前使用的单片机时钟最大:72MHZ,这也是我们当前使用的时钟频率

时钟的大小决定了,我们处理器运算速度的快慢

STM32单片机中,每一个外设或者端口都有自己独立的时钟源开启控制位

2.配置PB5(寄存器)

寄存器操作中的原则,只改变你需要操作的位,不能改变其他位。

1).打开B端口的时钟

B端口的使用来源是APB2总线

RCC-APB2ENR |=0X01<<3;

0x01<<3 ------->1000

RCC-APB2ENR | 1000 ----->1写入了第三位,而且没有改变其他位数据。

2).配置PB5--通用推挽输出

GPIOB_CRL寄存器

GPIOB_CRL |=0x01<<20

0000 0000 0001 0000 0000 0000 0000 0000 (0x01<<20)

0100 0100 0100 0100 0100 0100 0100 0100 原始值

0100 0100 0101 0100 0100 0100 0100 0100 结果(错误)

0100 0100 0001 0100 0100 0100 0100 0100 结果(正确)

清零操作:GPIOB_CRL &=~(0x0F<<20) //因为CRL寄存器初始值不为0

0000 0000 1111 0000 0000 0000 0000 0000 0x0F<<20

1111 1111 0000 1111 1111 1111 1111 1111 ~(0X0F<<20)

0100 0100 0100 0100 0100 0100 0100 0100 原始值与 ~(0X0F<<20)

0100 0100 0000 0100 0100 0100 0100 0100 结果(清零之后的结果)

再次运行 GPIOB_CRL |=0x01<<20

GPIOB_CRL初始值:          0100 0100 0000 0100 0100 0100 0100 0100

GPIOB_CRL | (0x01<<20)   0000 0000 0001 0000 0000 0000 0000 0000

结果:                                0100 0100 0001 0100 0100 0100 0100 0100

3).输出高电平或者低电平

GPIOB_ODR寄存器

拉高:GPIOB_ODR |=0x01<<5

拉低:GPIOB_ODR &=~(0x01<<5)

六、驱动安装:

KEIL的相关配置修改:

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>void Led_Config(void);
void delay_tim(u32 tim);
int main(void)
{// 来到这里的时候,系统的时钟已经被配置成72M。Led_Config();while(1){GPIOB->ODR &=~(0X01<<5);delay_tim(1000000);GPIOB->ODR |=(0X01<<5);delay_tim(1000000);}}void Led_Config(void)
{//时钟RCC->APB2ENR |=0X01<<3;//配置通用推挽输出GPIOB->CRL &=~(0X0F<<20);//清零GPIOB->CRL |=0x01<<20;//通用推挽输出--10MHZ    
}void delay_tim(u32 tim)
{while(tim--);
}

七、寄存器操作的补充

GPIOB->CRL &=~(0X0F<<20);
GPIOB--代表什么意思? 地址
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define PERIPH_BASE           ((uint32_t)0x40000000)
GPIOB端口基地址:0x40010c00 

GPIO_TypeDef内容:

typedef struct
{__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;
} GPIO_TypeDe

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

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

相关文章

哲学概述1(马克)

哲学题目大原则&#xff1a; 一、哲学与世界观 世界观&#xff1a;人们对于生活于其中的世界以及与世界关系的根本观点、根本看法方法论&#xff1a;是人们认识世界、改造世界的一般方法&#xff0c;是人们用啥样的方式、方法来观察事物和处理问题哲学&#xff1a;是理论化、…

最新车型库大全|阿里云实现调用API接口

整体请求流程&#xff1a; 介绍&#xff1a; 本次解析通过阿里云云市场的云服务来实现查询车型库大全查询&#xff0c;首先需要选择一家可以提供查询的商品。 [探数API]车型库查询_API专区_云市场-阿里云 步骤1: 选择商品 如图点击免费试用&#xff0c;即可免费申请该接口数…

使用合同比对工具时,有哪些常见问题和解决方案?

在使用合同比对工具的过程中&#xff0c;企业可能会面临一系列挑战&#xff0c;这些问题可能会影响工具的效率和效果。以下是一些常见的问题&#xff1a; 1.兼容性问题&#xff1a;在不同的工作环境中&#xff0c;合同文档可能以不同的格式存在&#xff0c;如PDF、Word、Excel…

常见接口限流算法

常见接口限流算法 今天面试时&#xff0c;面试官对我之前实习时实现的限流功能很感兴趣&#xff0c;发起了夺命连问… 正好趁此机会好好整理一下&#xff0c;很棒。 常用的限流算法 固定窗口 实现思想 固定窗口的实现原理是&#xff1a;在指定周期内累加访问次数&#xf…

BP神经网络学习内容分享:学习过程中常见的问题

BP神经网络是一种常用的机器学习算法&#xff0c;它在各个领域都有广泛的应用。然而&#xff0c;在学习BP神经网络的过程中&#xff0c;往往会遇到一些困难和问题。本文将介绍一些学习BP神经网络常见问题&#xff0c;并提供解决方法供参考。 一、过拟合问题 BP神经网络的一个常…

iPhone短信误删了?别急,这几招帮你轻松恢复!

在快节奏的生活中&#xff0c;我们频繁地使用iPhone进行各种操作&#xff0c;包括发送和接收短信。然而&#xff0c;有时候一个不小心&#xff0c;重要的短信就可能被误删&#xff0c;让人焦急万分。别担心&#xff0c;今天就来分享几个实用的方法&#xff0c;帮助你找回那些“…

VScode 使用记录

插件 1、代码提示插件&#xff1a;Codeium 安装说明&#xff1a;Codeium&#xff1a;强大且免费的AI智能编程助手 - Su的技术博客 (verysu.com) 用google账号登陆&#xff0c;跳转按照官网给的三个步骤来 step1&#xff1a;复制token&#xff1b; step2&#xff1a;在文件页…

重生之我们在ES顶端相遇第10 章- 分分分词器的基本使用

文章目录 思维导图0. 前言1. 光速上手1.1 指定分词器1.2 测试分词器 2. 分词流程(重要)2.1 基本介绍2.2 深入如何测试分词器 3. 自定义一个简单的分词器 思维导图 0. 前言 分词器在 ES 搜索使用中非常关键&#xff0c;一个好的分词器能够提高搜索的质量&#xff0c;让用户搜索…

mysql中的mysql 库不存在,进行恢复

mysql中的mysql 库不存在&#xff0c;进行恢复 解决方法&#xff1a; 关闭数据库 service mysqld stop 以跳过权限认证方式启动mysql mysqld_safe --defaults-file/etc/my.cnf --skip-grant-tables & 在输入&#xff1a;mysql -u root 在输入&#xff1a;use mysql 在输…

【C++ Primer Plus习题】9.1

问题: 解答: main.cpp #include <iostream> #include <string> #include "golf.h" using namespace std;#define SIZE 5int main() {golf ann;setgolf(ann, "AnnBirdfree", 24);golf andy;setgolf(andy);showgolf(ann);showgolf(andy);return…

JVM1-初识JVM

目录 什么是JVM JVM的功能 解释和运行 内存管理 即时编译 Java性能低的主要原因和跨平台特性 常见的JVM 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名&#xff1a;Java虚拟机 JVM本质上是一个运行在计算机上的程序&#xff0c;它的职责是运行Java字…

自建远程桌面RustDesk服务器(CentOS配置,保姆级案例)

安装环境: 系统:Centos7 网络:连接互联网 一、环境准备: ①变更国内yum源(方便安装包下载) 备份源文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载国内(阿里)源文件: curl -o /etc/yum.repos.d/CentOS-Base.repo htt…

蔡英丽医生:“斑块克星”三种食物,轻松守护心血管健康

在这个快节奏的时代&#xff0c;心血管疾病悄然成为威胁我们健康的“隐形杀手”。尤其是血管斑块&#xff0c;它不仅悄悄堵塞着我们的生命通道&#xff0c;还可能引发心脏病、中风等严重后果。但别担心&#xff0c;今天我们就来揭秘那些藏在日常餐桌上的“斑块克星”&#xff0…

CMU 10423 Generative AI:lec1

文章目录 1 概述2 内容摘录AIGC的主要应用大模型训练时&#xff0c;分布式训练有哪几种方式&#xff1f;NLP模型和CV模型发展历史本课程触及的主题课程前提、评分标准、阅读材料、5个作业、大项目课程学习目标 3 阅读材料3.1 Sequence Modeling: Recurrent and Recursive Nets.…

Faiss向量数据库

Faiss&#xff08;Facebook AI Similarity Search&#xff09;向量数据库是由Facebook AI研究院开发的一种高效相似性搜索和聚类的库。Faiss不仅支持在高维空间中进行高效的相似性搜索&#xff0c;还能够在处理大规模数据集时展现出卓越的性能&#xff0c;尤其适用于图像检索、…

C++和蓝图混用事件

一、在C中创建动态多播委托 1、UEBpAndCpp_Sender.h //声明一个蓝图可调用的多播委托的类型DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUEBpAndCpp_Broadcast, int, Param);//创建对象UPROPERTY(BlueprintAssignable)FUEBpAndCpp_Broadcast UEBpAndCpp_Broadcast;注意&…

Vue3其他Api

1.shallowRef与shallowReactive <template><div class"app"><h2>求和为:{{ sum }}</h2><h2>名字为:{{ person.name }}</h2><h2>年龄为:{{ person.age }}</h2><button click"sum 1">sum1</butto…

深入浅出:模拟实现 C++ STL 中的 unordered_map 和 unordered_set

目录 引言基础知识 散列表哈希函数负载因子模拟实现 unordered_set 数据结构设计哈希函数碰撞解决策略插入操作查找操作删除操作模拟实现 unordered_map 键值对存储插入操作查找操作删除操作代码示例总结 1. 引言 unordered_map 和 unordered_set 是 C 标准模板库 (STL) 中非…

LeetCode: 543. 二叉树的直径

二叉树的直径 原题 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1&#xff1a; 输入&#xff1a;roo…

Vulnhub:hacksudo search

靶机下载地址。下载完成后&#xff0c;在VirtualBox中导入虚拟机&#xff0c;系统处理器修改为2&#xff0c;网卡配置修改为桥接。 信息收集 主机发现 扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 靶机ip&#xff1a;192.168.31.218 端口扫描 nmap 192.168…