博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无操作系统时的 LED 驱动
阅读量:6906 次
发布时间:2019-06-27

本文共 878 字,大约阅读时间需要 2 分钟。

hot3.png

1 #define reg _ gpio _ ctrl *(volatile int *)(ToVirtual(GPIO _ REG _ CTRL))

2 #define reg _ gpio _ data *(volatile int *)(ToVirtual(GPIO _ REG _ DATA))
3 /*初始化 LED*/
 专业始于专注 卓识源于远见
‐ 10 ‐
4 void LightInit(void)
5 {
6 reg _ gpio _ ctrl |= (1 << n); /*设置 GPIO 为输出*/
7 }
8
9 /*点亮 LED*/
10 void LightOn(void)
11 {
12 reg _ gpio _ data |= (1 << n); /*在 GPIO 上输出高电平*/
13 }
14
15 /*熄灭 LED*/
16 void LightOff(void)
17 {
18 reg _ gpio _ data &= ~(1 << n); /*在 GPIO 上输出低电平*/
19 }

需要理解#define reg _ gpio _ ctrl *(volatile int *)(ToVirtual(GPIO _ REG _ CTRL))

ToVirtual(GPIO _ REG _ CTRL) 表示一个数值,如0x20

那么 (volatile int *)(ToVirtual(GPIO _ REG _ CTRL) 

前面加(volatile int *)  表示0x20是个地址,而且这个地址类型是volatile int,有着固定的地址。

再在前面加"*":*(volatile int *)0x20则变成了变量

*(volatile int *)0x20可看作是一个普通变量,这个变量有固定的地址,指向0x20。而0x20只是个常量,不是指针更不是变量。

后面的代码,就是针对这个地址进行赋值处理

转载于:https://my.oschina.net/u/920274/blog/2872437

你可能感兴趣的文章
PXE 网络装机——实现无人值守批量装机
查看>>
【爱项目、爱管理】项目成本管理如何做到又好又省钱
查看>>
博文编辑器(Open Live Writer)的配置大全,博主必备利器~
查看>>
Samba部署共享服务
查看>>
怎么提取PDF页面,PDF页面提取的操作步骤
查看>>
网络编程
查看>>
实体店为什么要做小程序
查看>>
linux运维云计算课程学习,Linux云计算面试时遇到的问题
查看>>
云计算入门学习资料,linux云计算学习大纲
查看>>
大数据开发语言学习指南:新人快速学习大数据的套路
查看>>
好用的企业邮箱有哪些?
查看>>
Oracle热备份
查看>>
linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)
查看>>
动态规划之经典例题
查看>>
gitlab web hooks 应用
查看>>
STM32的停机模式与唤醒
查看>>
安全运维之端口安全
查看>>
拉动内需有成效,外贸依存度下降
查看>>
Python的hasattr() getattr() setattr() 函数
查看>>
程序员面试题100题第21题——左旋转字符串
查看>>