| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 嵌入式 -> 物联网ARM开发-3STM32GPIO操作平台 -> 正文阅读 |
|
|
[嵌入式]物联网ARM开发-3STM32GPIO操作平台 |
|
前言: 这章开始使用ALIENTEK 探索者 STM32F4 开发板选择的是 STM32F407ZGT6 作为MCU,该芯片是 STM32F407 里面配置非常强大的了。开发板原理图将会传到资源里面。 它拥有的资源包括:集成 FPU 和 DSP 指令,并具有 192KB SRAM、1024KB FLASH、12 个 16 位定时器、2 个 32 位定时器、2 个 DMA 控制器(共 16 个 通道)、3 个 SPI、2 个全双工 I2S、3 个 IIC、6 个串口、2 个 USB(支持 HOST/SLAVE)、2 个 CAN、3 个 12 位 ADC、2 个 12 位 DAC、1 个 RTC(带日历功能)、1 个 SDIO 接口、1 个 FSMC 接口、1 个 10/100M 以太网 MAC 控制器、1 个摄像头接口、1 个硬件随机数生成器、以及 112 个通用 IO 口等。该芯片的配置十分强悍,很多功能相对 STM32F1 来说进行了重大改进,比如 FSMC 的速度,F4 刷屏速度可达 3300W 像素/秒,而 F1 的速度则只有 500W 左右。 目录 一、GPIO的基本概念及寄存器1、GPIO接口介绍通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使用。因此其作用和功能是非常重要的。 2、GPIO功能复用查看《?STM32F4数据手册》3章Figure13,可查询STM32芯片管脚排布 查看《?STM32F4数据手册》3.6节,可查询每个管脚支持的功能
3、寄存器介绍STM32F4-GPIO常用寄存器?
GPIOx_MODER,??GPIOx_OTYPER,??GPIOx_OSPEEDR?????GPIOx_PUPDR?
GPIOx_IDR?、GPIOx_ODR?
GPIOx_BSRR(比ODR方便,ODR需要|=,会改变其他位)
GPIOx_AFRH?、GPIOx_AFRL (4位一组,32位不够描述,所以用2组) 注:每一组GPIO端口都有一套上述的寄存器去配置它自己的功能
?查看《STM32F4中文参考手册》第7张通用I/O 二、LED寄存器版1、硬件原理图分析我们先找到LED的硬件原理图
?从图中看出,低电平会让电量流入从而点亮 ? 对应的引脚是PF9 PF10
??STM32?外设很多,为了降低功耗,每个外设都对应着一个时钟,在芯片刚上电的时候这些时钟都是被关闭的,如果想要外设工作,必须把相应的时钟打开。??????? 所有的?GPIO?都挂载到?AHB1?总线上,所以它们的时钟由?AHB1外设时钟使能寄存器(RCC_AHB1ENR)来控制 参考《STM32F4xx中文参考手册》时钟树、存储器映射 2、编程步骤分析(1)开启GPIOE的时钟???????
?
(2)配置PF9,?PF10接口??????????
? ? ? ?
(3)控制LED;
?
ODR 能控制管脚高低电平为什么还需要BSRR和SRR寄存器的原因? 一方面: ODR寄存器位可读可写:写1?GPIO管脚为高电平,写 0 为低电平。 BSRR 只写寄存器,写 0 ,无动作。16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为 高电平 另一方面: 用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断 关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好还是用BSRR和BRR。
3、编程实例操作打开cubmx配置PF9、PF10为GPIO输出,我们可以通过寄存器配置 ,但是cubmx更方便一点创建工程打开keil
?打开keil写入上面的寄存器指令编译并下载到开发板
?三、LED库函数版1、硬件原理图分析(略参考上面)2、cubeMX的配置选择芯片型号,根据硬件原理图配置引脚生成工程模板 (1)择芯片型号
(2)选择引脚
(3)配置GPIO输出模式 (4)生成keil工程并打开
?3、编程分析这里初始化工作cubmx已经帮我们处理好了
?
四、人机交互-按键处理功能:按键实现灯亮灭。 1、硬件原理图分析(LED略参考上面)
? 观察原理图,KEY0、KEY1 和 KEY2 是低电平有效的,而 KEY_UP 是高电平有效 的,并且外部都没有上下拉电阻,所以,需要在 STM32F4 内部设置上下拉。 2、cubmx配置
3、编程分析(处理按键毛刺)(1)默认复位灯灭,在循环之前设置led高电平。 (2)while循环读取按键的值,查看硬件原理图分析,pe4高电平有效。另外我们手指按下的瞬间,电流会有很多毛刺,所以这里通过经验设置了一个延时时间,等毛刺结束之后再次确认是否按下,如果按下操作led的翻转。
五、项目演示led人机交互按键演示实验 |
|
|
| 嵌入式 最新文章 |
| 基于高精度单片机开发红外测温仪方案 |
| 89C51单片机与DAC0832 |
| 基于51单片机宠物自动投料喂食器控制系统仿 |
| 《痞子衡嵌入式半月刊》 第 68 期 |
| 多思计组实验实验七 简单模型机实验 |
| CSC7720 |
| 启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
| STM32初探 |
| STM32 总结 |
| 【STM32】CubeMX例程四---定时器中断(附工 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/15 1:12:10- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |