STM32
登录
直播中
大彭
10年用户
1037经验值
擅长:电源/新能源 嵌入式技术
私信
关注
[问答]
如何用STM32F103ZET6实现点亮一盏led灯呢
开启该帖子的消息推送
STM32F103ZET6
STM32
怎样去使用基于ARM cortex-m3的
STM32
微控制器?
如何用STM32F103ZET6实现点亮一盏led灯呢?
回帖
(1)
杨万富
2021-11-29 15:22:57
寄存器操作GPIO口
1.ARM 介绍
2.开发板的介绍
2.1软件安装
2.2工程建立
总线架构和时钟树
GPIO口使用
寄存器操作GPIO口
作业:点亮LED灯
1、ARM的介绍
1.咱们今天学的是基于ARM cortex-m3的STM32微控制器这本书;首先,咱们要了解这几个名词的意思:
ARM:是一个公司的名字---设计芯片内核架构的---设计CPU的
cortex-M3:是M3内核,是ARM 公司设计一款CPU;
STM32:
ST :意法半导体公司---生产芯片的公司--
M3:ST公司生产的一款芯片,上面集成了很多模块
32: 32位CPU处理器
ST公司根据ARM公司设计的M3内核架构生产的一款32位的单片机
ARM公司不可能只生产一款单片机吧,
2.ARM芯片的发展:
架构 系列 内核
V4 ARM7
V5 ARM9
V6 ARM11
V7 A系列 A8,A9 --支持大型嵌入式系统:Linux—Cortex-A9
R系列 实时性高、处理器强大、可靠—汽车的组件
M系列 M3,M4 –低功耗、低成本、处理速度快!
咱们今天讲的就是V7架构的M系列的单片机 STM32;
2.开发板的介绍
我用的开发板型号是:STM32F103ZET6
1.开发板模块 :
MCU:stm32F103ZET6
内部:SRAM:数据存储区(64K) ROM:程序存储区--内置FLASH(512K)
外部扩展:SRAM--1M字节 FLASH: W25Q64---8M;
按键,复位键,指示灯
Jlink 方口线N 串口线 排线 LED灯 蜂鸣器 按键
今天咱们就先来实现如何点亮一盏led灯?
咱们学习C语言的时候,想实现某种现象或者功能,先
安装软件--
建立工程--
编写程序--
编译--
链接--
执行--
得到现象!
学习stm32 也是一样的,我们使用的编译软件是keil5;
2.安装软件:
Keil5:
Jlink驱动:下载器
3.建立工程
参考建立工程的文档
core_cm3.c/.h: ARM公司提供的内核核心文件,不可修改;
inc: #include 的缩写---ST公司提供的头文件;
src: 源文件
project: 工程!
startup:stm32的启动代码---汇编文件
Startup: stm32f10x_hd.s---中断服务函数名;
user: stm32f10x_conf.h--外设头文件
stm32f10x_it.c---中断服务函数的定义
API:这是你自己写的程序模块;---.c和.h文件
对于单片机stm32来说,CPU相当于人的大脑,所以,我们先要了解CPU的总线架构,从而了解CPU的工作过程;
1.总线架构和时钟树
2.总线:指令总线、数据总线、系统总线
指令总线:保存指令的---ROM中--程序代码
数据总线:保存数据的---RAM中--常量
系统总线:APB1与APB2上挂接了很多外设;外设通过APB1/APB2总线、AHB桥接,实现与内核的连接!
CPU相当于人的大脑,时钟相当于CPU的脉搏
3. 时钟树
中文参考手册第6章P56页
时钟源:
两个内部时钟源:RC振荡器产生时钟源
HSI:高速内部时钟---8MHz
LSI:低速内部时钟---40KHz
两个外部时钟源:晶振产生时钟源
HSE:高速外部时钟---8MHz(stm32开发板上)
LSE:低速外部时钟---32.768KHz
通过这几个时钟源,产生系统或者直接给外设提供所需要的时钟;
系统时钟:系统时钟是片上外设的时钟来源
SYSCLK--72MHz;
APB1---36MHz;
APB2---72MHz;
当不被使用时,任何一个时钟源都可以被独立的关闭,用来降低功耗!所以,我们使用外设时,必须开启对应的外设时钟!
我们使用外设的时候,需要哪些时钟就必须开启对应的时钟。
GPIO外设是挂载在APB2总线上的,APB2的时钟是APB2预分频器的输出,而APB2 预分频器的时钟来源是AHB预分频器
时钟和CPU总线搞定之后,我们来学习一下如何点亮led灯:首先led灯和CPU之间是如何连接的----是通过GPIO口连接的:
GPIO口:通用IO口---是普通的I/O口;
如果作为输入信号的功能,必须把GPIO口配置成输入模式;
如果作为输出信号的功能,必须把GPIO口配置成输出模式;
Stm32中GPIO口:
一共分为7组端口:GPIOA~GPIOG
每组端口分为16个管脚:0~15 一共是7*16=112个管脚--- I/O
A端口的第5个管脚:PA5 端口B的第6个管脚:PB6
PA0: A端口的第0个管脚 PA15---A端口的第15个管脚
GPIO口作用:输入输出接口,进行数据交换的接口;只能输入输出高低电平;
即:高电平 1(3.3v) 低电平0(0v) ---GPIO管脚只能呈现0和1两种状态!
STM32中这么多的管脚,到底哪些是和灯连接在一起的呢?
原理图:
管脚:PB5---D3
PE5---D4
PA5---D5
PA6---D6
在这里,牢记一句话:GPIO口的管脚,都是连接在STM32上的,是stm32上的管脚;
如何操作GPIO口?
使用GPIO口的管脚,要把他们配置为输入还是输出模式?
什么是输入?什么是输出?
规定:输入输出是相对于CPU
来说的;
CPU
输出一个信号到管脚上,就叫输出;
CPU
从管脚接收到一个信号,叫输入!
通过寄存器操作:寄存器是CPU的组成部分,可用来存放数据、指令、地址等,操作寄存器相当于直接操作CPU;
对于GPIO口的操作:
寄存器--配置GPIO口输入输出模式:
TTL触发器:把模拟信号转换为数字信号!(0和1)
输入和输出:
是相对于CPU来说的,如果CPU通过管脚接收到数据,叫输入;输出就是CPU通过管脚往外界发送数据;
配置寄存器:高/低 :配置模式和初始化控制器
数据寄存器:输入输出数据
状态寄存器:状态---我可以查询
IO口配置:
PA5
50MHz--推挽输出模式:
让GPIOA_CRL 的23~20位 设置为 0 0 1 1-----0x03<<20
打开时钟: 第70页
对应的打开相应的IO口时钟!
数据操作:
GPIOA_IDR :
输入0
和1
GPIOA_ODR:
输出0
和1
GPIOA_BSRR: 输出0和1
GPIOA_BRR: 输出0;
寄存器操作GPIO口:
一、原理层:
查看原理图:知道管脚的信息:哪个管脚,管脚对应的
分析原理图:打开时钟,模式的配置
打开对应的端口时钟和外设时钟配置GPIO模式
二、应用层:
1.操作GPIO模式
寄存器操作GPIO口
1.ARM 介绍
2.开发板的介绍
2.1软件安装
2.2工程建立
总线架构和时钟树
GPIO口使用
寄存器操作GPIO口
作业:点亮LED灯
1、ARM的介绍
1.咱们今天学的是基于ARM cortex-m3的STM32微控制器这本书;首先,咱们要了解这几个名词的意思:
ARM:是一个公司的名字---设计芯片内核架构的---设计CPU的
cortex-M3:是M3内核,是ARM 公司设计一款CPU;
STM32:
ST :意法半导体公司---生产芯片的公司--
M3:ST公司生产的一款芯片,上面集成了很多模块
32: 32位CPU处理器
ST公司根据ARM公司设计的M3内核架构生产的一款32位的单片机
ARM公司不可能只生产一款单片机吧,
2.ARM芯片的发展:
架构 系列 内核
V4 ARM7
V5 ARM9
V6 ARM11
V7 A系列 A8,A9 --支持大型嵌入式系统:Linux—Cortex-A9
R系列 实时性高、处理器强大、可靠—汽车的组件
M系列 M3,M4 –低功耗、低成本、处理速度快!
咱们今天讲的就是V7架构的M系列的单片机 STM32;
2.开发板的介绍
我用的开发板型号是:STM32F103ZET6
1.开发板模块 :
MCU:stm32F103ZET6
内部:SRAM:数据存储区(64K) ROM:程序存储区--内置FLASH(512K)
外部扩展:SRAM--1M字节 FLASH: W25Q64---8M;
按键,复位键,指示灯
Jlink 方口线N 串口线 排线 LED灯 蜂鸣器 按键
今天咱们就先来实现如何点亮一盏led灯?
咱们学习C语言的时候,想实现某种现象或者功能,先
安装软件--
建立工程--
编写程序--
编译--
链接--
执行--
得到现象!
学习stm32 也是一样的,我们使用的编译软件是keil5;
2.安装软件:
Keil5:
Jlink驱动:下载器
3.建立工程
参考建立工程的文档
core_cm3.c/.h: ARM公司提供的内核核心文件,不可修改;
inc: #include 的缩写---ST公司提供的头文件;
src: 源文件
project: 工程!
startup:stm32的启动代码---汇编文件
Startup: stm32f10x_hd.s---中断服务函数名;
user: stm32f10x_conf.h--外设头文件
stm32f10x_it.c---中断服务函数的定义
API:这是你自己写的程序模块;---.c和.h文件
对于单片机stm32来说,CPU相当于人的大脑,所以,我们先要了解CPU的总线架构,从而了解CPU的工作过程;
1.总线架构和时钟树
2.总线:指令总线、数据总线、系统总线
指令总线:保存指令的---ROM中--程序代码
数据总线:保存数据的---RAM中--常量
系统总线:APB1与APB2上挂接了很多外设;外设通过APB1/APB2总线、AHB桥接,实现与内核的连接!
CPU相当于人的大脑,时钟相当于CPU的脉搏
3. 时钟树
中文参考手册第6章P56页
时钟源:
两个内部时钟源:RC振荡器产生时钟源
HSI:高速内部时钟---8MHz
LSI:低速内部时钟---40KHz
两个外部时钟源:晶振产生时钟源
HSE:高速外部时钟---8MHz(stm32开发板上)
LSE:低速外部时钟---32.768KHz
通过这几个时钟源,产生系统或者直接给外设提供所需要的时钟;
系统时钟:系统时钟是片上外设的时钟来源
SYSCLK--72MHz;
APB1---36MHz;
APB2---72MHz;
当不被使用时,任何一个时钟源都可以被独立的关闭,用来降低功耗!所以,我们使用外设时,必须开启对应的外设时钟!
我们使用外设的时候,需要哪些时钟就必须开启对应的时钟。
GPIO外设是挂载在APB2总线上的,APB2的时钟是APB2预分频器的输出,而APB2 预分频器的时钟来源是AHB预分频器
时钟和CPU总线搞定之后,我们来学习一下如何点亮led灯:首先led灯和CPU之间是如何连接的----是通过GPIO口连接的:
GPIO口:通用IO口---是普通的I/O口;
如果作为输入信号的功能,必须把GPIO口配置成输入模式;
如果作为输出信号的功能,必须把GPIO口配置成输出模式;
Stm32中GPIO口:
一共分为7组端口:GPIOA~GPIOG
每组端口分为16个管脚:0~15 一共是7*16=112个管脚--- I/O
A端口的第5个管脚:PA5 端口B的第6个管脚:PB6
PA0: A端口的第0个管脚 PA15---A端口的第15个管脚
GPIO口作用:输入输出接口,进行数据交换的接口;只能输入输出高低电平;
即:高电平 1(3.3v) 低电平0(0v) ---GPIO管脚只能呈现0和1两种状态!
STM32中这么多的管脚,到底哪些是和灯连接在一起的呢?
原理图:
管脚:PB5---D3
PE5---D4
PA5---D5
PA6---D6
在这里,牢记一句话:GPIO口的管脚,都是连接在STM32上的,是stm32上的管脚;
如何操作GPIO口?
使用GPIO口的管脚,要把他们配置为输入还是输出模式?
什么是输入?什么是输出?
规定:输入输出是相对于CPU
来说的;
CPU
输出一个信号到管脚上,就叫输出;
CPU
从管脚接收到一个信号,叫输入!
通过寄存器操作:寄存器是CPU的组成部分,可用来存放数据、指令、地址等,操作寄存器相当于直接操作CPU;
对于GPIO口的操作:
寄存器--配置GPIO口输入输出模式:
TTL触发器:把模拟信号转换为数字信号!(0和1)
输入和输出:
是相对于CPU来说的,如果CPU通过管脚接收到数据,叫输入;输出就是CPU通过管脚往外界发送数据;
配置寄存器:高/低 :配置模式和初始化控制器
数据寄存器:输入输出数据
状态寄存器:状态---我可以查询
IO口配置:
PA5
50MHz--推挽输出模式:
让GPIOA_CRL 的23~20位 设置为 0 0 1 1-----0x03<<20
打开时钟: 第70页
对应的打开相应的IO口时钟!
数据操作:
GPIOA_IDR :
输入0
和1
GPIOA_ODR:
输出0
和1
GPIOA_BSRR: 输出0和1
GPIOA_BRR: 输出0;
寄存器操作GPIO口:
一、原理层:
查看原理图:知道管脚的信息:哪个管脚,管脚对应的
分析原理图:打开时钟,模式的配置
打开对应的端口时钟和外设时钟配置GPIO模式
二、应用层:
1.操作GPIO模式
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32F103ZET6
STM32
如
何用
STM32F103ZET6
点亮
LED
灯
?
2021-12-16
1973
如何去
实现
一
种基于
STM32F103ZET6
设计的简易示波器
呢
2021-11-15
1617
怎样用GD32
F103ZET6
替换
STM32F103ZET6
芯片
呢
2021-10-22
4582
如何去
实现
一
种基于
STM32F103ZET6
的
LED
BEEP KEY驱动?
2021-07-23
947
STM32F103ZET6
芯片具有哪些特点
2021-10-25
5040
如何设置GPIO来
点亮
一盏
LED
?
2022-02-16
1050
LABVIEW 如
何用
按钮上升沿
点亮
一盏灯
和按钮下降沿
点亮
?,如何制作不同频率,让
灯
以不同的频率闪烁?
2018-01-31
6336
STM32F103ZET6
之独立看门狗实验
2021-08-16
1003
如何去
实现
STM32F103ZET6
按键的外部中断代码
呢
2021-12-13
1041
如何利用
stm32f103zet6
外部中断去控制
led
灯
呢
2021-11-22
861
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分