您当前的位置: 首页 > 

韦东山

暂无认证

  • 0浏览

    0关注

    506博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

4_LED程序

韦东山 发布时间:2022-01-13 16:01:52 ,浏览量:0

第四章 LED程序 4.1 硬件知识_LED原理图

​ 当我们学习C语言的时候,我们会写个Hello程序。

​ 那当我们写ARM程序,也该有一个简单的程序引领我们入门,这个程序就是点亮LED。

​ 我们怎样去点亮一个LED呢?

​ 分为三步:

​ ① 看原理图,确定控制LED的引脚;

​ ② 看主芯片的芯片手册,确定如何设置控制这个引脚;

​ ③ 写程序;

​ LED样子有很多种,像插脚的,贴片的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1bXLjEth-1642059895488)(https://cdn.jsdelivr.net/gh/DongshanPI/HomeSite-Photos@main/IMX6ULL-BareMetal/LED_Program_image001.jpg)]

​ 它们长得完全不一样,因此我们在原理图中将它抽象出来。

​ 点亮LED需要通电源,同时为了保护LED,加个电阻减小电流。

​ 控制LED灯的亮灭,可以手动开关LED,但在电子系统中,不可能让人来控制开关,通过编程,利用芯片的引脚去控制开关。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9gfUgDAF-1642059895489)(https://cdn.jsdelivr.net/gh/DongshanPI/HomeSite-Photos@main/IMX6ULL-BareMetal/LED_Program_image002.jpg)]

​ LED的驱动方式,常见的有四种。

​ 方式1:使用引脚输出3.3V点亮LED,输出0V熄灭LED。

​ 方式2:使用引脚拉低到0V点亮LED,输出3.3V熄灭LED。

​ 有的芯片为了省电等原因,其引脚驱动能力不足,这时可以使用三极管驱动。

​ 方式3:使用引脚输出1.2V点亮LED,输出0V熄灭LED。

​ 方式4:使用引脚输出0V点亮LED,输出1.2V熄灭LED。

​ 由此,主芯片引脚输出高电平/低电平,即可改变LED状态,而无需关注GPIO引脚输出的是3.3V还是1.2V。

​ 所以简称输出1或0:

​ 逻辑1–>高电平

​ 逻辑0–>低电平

4.2 普适的GPIO引脚操作方法

​ GPIO: General-purpose input/output,通用的输入输出口。

4.2.1 GPIO模块一般结构

a. 有多组GPIO,每组有多个GPIO

b. 使能:电源/时钟

c. 模式(Mode):引脚可用于GPIO或其他功能

d. 方向:引脚Mode设置为GPIO时,可以继续设置它是输出引脚,还是输入引脚

e. 数值:对于输出引脚,可以设置寄存器让它输出高、低电平

​ 对于输入引脚,可以读取寄存器得到引脚的当前电平

4.2.2 GPIO寄存器操作

a. 芯片手册一般有相关章节,用来介绍:power/clock

​ 可以设置对应寄存器使能某个GPIO模块(Module)

​ 有些芯片的GPIO是没有使能开关的,即它总是使能的

b. 一个引脚可以用于GPIO、串口、USB或其他功能,

​ 有对应的寄存器来选择引脚的功能

c. 对于已经设置为GPIO功能的引脚,有方向寄存器用来设置它的方向:输出、输入

d. 对于已经设置为GPIO功能的引脚,有数据寄存器用来写、读引脚电平状态

GPIO寄存器的2种操作方法:

原则:不能影响到其他位

  1. 直接读写:读出、修改对应位、写入

​ 要设置bit n:

val = data_reg;
val = val | (1            
关注
打赏
1658827356
查看更多评论
0.0346s