完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
寄存器操作GPIO口
1.ARM 介绍 2.开发板的介绍 2.1软件安装 2.2工程建立
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通过管脚往外界发送数据; 配置寄存器:高/低 :配置模式和初始化控制器 数据寄存器:输入输出数据 状态寄存器:状态---我可以查询
50MHz--推挽输出模式: 让GPIOA_CRL 的23~20位 设置为 0 0 1 1-----0x03<<20
对应的打开相应的IO口时钟! 数据操作: GPIOA_IDR :输入0和1 GPIOA_ODR: 输出0和1 GPIOA_BSRR: 输出0和1 GPIOA_BRR: 输出0; 寄存器操作GPIO口: 一、原理层:
1.操作GPIO模式 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1909 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1678 浏览 1 评论
1172 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
771 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1732 浏览 2 评论
1970浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
807浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
255浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
624浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 06:22 , Processed in 1.008735 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号