驱动led --GPIO控制
GPIO引脚操作方法概述
- 硬件知识_LED原理图
- 不同主芯片控制GPIO引脚的方法概述
- 具体单板控制GPIO引脚的方法详解
- 具体单板LED程序的编写与实验
- 汇编与机器码
- 编程知识_进制
- 编程知识_字节序_位操作
- 编写C程序控制LED
- 解析C程序的内部机制
- 完善LED程序
- 编写按键控制LED的程序
GPIO: General-purpose input/output,通用的输入输出口
1.GPIO模块一般结构:
a.有多组GPIO,每组有多个GPIO
b.使能:电源/时钟
c.模式(Mode):引脚可用于GPIO或其他功能
d.方向:引脚Mode设置为GPIO时,可以继续设置它是输出引脚,还是输入引脚
e.数值:对于输出引脚,可以设置寄存器让它输出高、低电平
对于输入引脚,可以读取寄存器得到引脚的当前电平
2.控制原理
3.GPIO寄存器操作-程序配置过程:
原则不要影响其他位
过程
使能,工作模式,输入输出方向,高低电平
a.芯片手册一般有相关章节,用来介绍:power/clock
可以设置对应寄存器使能某个GPIO模块(Module)
有些芯片的GPIO是没有使能开头的,即它总是使能的
b.一个引脚可以用于GPIO、串口、USB或其他功能,
有对应的寄存器来选择引脚的功能
c.对于已经设置为GPIO功能的引脚,有方向寄存器用来设置它的方向:输出、输入
d.对于已经设置为GPIO功能的引脚,有数据寄存器用来写、读引脚电平状态
GPIO寄存器的2种常用操作方法:
原则:不能影响到其他位
a.直接读写:读出、修改对应位、写入
要设置bit n:
val = data_reg;
val = val | (1<<n);
data_reg = val;
要清除bit n:
val = data_reg;
val = val & ~(1<<n);
data_reg = val;
b.set-and-clear protocol:
set_reg, clr_reg, data_reg 三个寄存器对应的是同一个物理寄存器,
要设置bit n:set_reg = (1<<n);默认第0位置1,然后移动
要清除bit n:clr_reg = (1<<n);默认第0位置0,然后移动
访问寄存器方式
程序框架
编译结果
Makefile文件
4.GPIO的其他功能:防抖动、中断、唤醒:
后续章节再介绍
代码
void delay(volatile int d)
{while(d--);
}int main(void)
{volatile unsigned int *pReg;/*必须加volatile,防止变量被优化*//* 使能GPIO5: 默认使能 *//* 把GPIO5_3设置为GPIO功能 */pReg = (volatile unsigned int *)(0x02290000 + 0x14);*pReg |= (0x5);/* 把GPIO5_3设置为输出引脚*/pReg = (volatile unsigned int *)(0x020AC004);*pReg |= (1<<3);//一位的用左移右移,多位的直接写就好了pReg = (volatile unsigned int *)(0x020AC000);while (1){/* 设置GPIO5_3输出1 */*pReg |= (1<<3);delay(1000000);/* 设置GPIO5_3输出0 */*pReg &= ~(1<<3);delay(1000000); }return 0;
}
驱动led --GPIO控制相关推荐
- 二、点亮LED(GPIO控制)
二.点亮LED(GPIO控制) 文件状态: [ ] 草稿 [ ] 正在修改 [ √ ] 正式发布 文件标识: 当前版本: V1.1 作 者: Skymixos 完成日期: 2022年10月02日 版 ...
- 巧用1个GPIO控制2个LED显示4种状态
很多电子产品有状态指示灯,比如电视机: 待机状态亮红灯 开机状态亮绿灯 实现起来很简单,微控制器MCU的两个GPIO分别控制就行: 不过资源总是紧张的,有时候会碰到GPIO不够用的情况. 如果只用1个 ...
- K210应用2-使用GPIO控制LED状态
使用gpio控制led 实验目的 本次主要应用K210最基础的功能,了解FPIOA引脚映射,以及GPIO设置.该节验证方式为通过控制LED的亮灭来进行验证. 实验准备 1).带发光二极管(LED)的K ...
- 树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
- Linux嵌入式驱动开发13——ioctl接口(gpio控制使用)
文章目录 全系列传送门 引言 什么是unlocked_ioctl接口? unlocked_ioctl和read/write函数有什么相同和不同 unlocked_ioctl接口命令规则 命令的合成宏与 ...
- NRF51822开发笔记-5.nRF51822裸机实验GPIO输出驱动LED
NRF51822开发笔记-5.nRF51822裸机实验GPIO输出驱动LED 一.例程分析 1.多个GPIO输出模式配置函数 2.单个GPI0输出模式配置函数 GPIO输出高电平函数 二.程序设计 一 ...
- ARM裸机的知识总结(4) ------- 利用GPIO控制LED
一.一步步点亮LED1_硬件工作原理及原理图查阅 1.LED物理特性介绍 LED本身有2个接线点,一个是LED的正极,一个是LED的负极.LED这个硬件的功能就是点亮或者不亮,物理上想要点亮一颗LED ...
- 终极教程,带具体实验现象,1个GPIO控制2个LED显示4种状态,欢迎讨论!
芯片之家前几天发了一篇文章,讨论1个GPIO控制2个LED显示4种状态,并没有带具体的实验现象,有点小遗憾: 绝妙!1个GPIO控制2个LED显示4种状态,什么?你不信?(点击阅读) 今天在卓老师公众 ...
- 控制led闪烁次数_单片机驱动LED灯的进阶之路
对于大多数单片机的学习者或者是从事单片机行业的工程师来说,单片机驱动LED闪烁起来的时候,基本都是我们入坑的开始,同时当时的那种兴奋与喜悦都是难以忘怀的,从LED灯亮起,到闪烁,再到各种流水灯,能开心 ...
最新文章
- Javascript 中的神器——Promise
- Android系统服务
- CSS的Grid网格布局
- java xfire下载_XFIRE教程 PDF 下载
- python 将图片转换成像素画_Canvas 实现位图转像素画
- 投影仪是计算机的基本配置6,关于网络投影仪的六个问题
- 解决SVN提交代码时的错误:“Could not execute PROPPATCH”
- java实体类的功能_(转载) java实体类的作用
- 小米球Ngrok-使用方法
- php接收post数据 json数据,PHP接收post数据并解析json的简单实例
- FFmpeg合并ts文件为mp4文件
- ZA7783是一颗将单路MIPI DSI信号转换成单路LVDS/TTL信号的转接芯片
- Python 下载哔哩哔哩视频
- Python概率分布大全(含可视化)
- 备份恢复Lesson 10. Restore and Recovery Concepts
- vue中全局注册和局部注册
- web打印插件 js打印插件 网页打印插件
- 机械手组装调试系列教程(一)——开题篇
- nanopi emmc定制系统量产步骤
- Linux字体库问题(PDF转图片中文字缺失)