| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:25:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |