GPIO / LED驱动编程开发

GPIO / LED---- 驱动开发编程

一般来说,GPIO的Pin都是可选功能的:
GPIO[x] :selects the function of GPIO Pin.
为什么?不要问.

操作:
1.将某一个GPIO选择功能复用为GPIO.
2.将该GPIO选择为GPIO输出.
3.控制该管脚输出高/低电平.

1、电路原理图

   底板电路原理图:x6818bv2.pdf
	 结论,控制LED1的亮或者灭
     实质就是控制导线GPIOC12出现低或者高电平
     
	核心板电路原理图:x4418cv3_release20150713.pdf
   	规则,底板和核心中名称相同的导线是同一条导线
   	方法,拷贝底板中导线的名称  
         	在核心板电路原理图中搜索该名称
   	结论,控制LED1的亮或者灭
         	实质就是控制CPU上的W15输出低或者高电平
         
问题:软件上如何控制W15输出低或者高电平?
     要去商品S5P6818的使用说明书(datasheet/数据手册)中找答案
     SEC_S5P6818X_Users_Manual_preliminary_Ver_0.00.pdf 

2、cpu datasheet
P77
W15, 可选功能1(GPIO)

s5p6818上有537个管脚,其中160个可以作为GPIO

ARM中特殊功能寄存器都是4字节(32bit)
GPIOCALTFN0 0xc001c020
  	[25:24] 01, W15配置为可选功能1(IO功能)
GPIOCOUTENB 0xc001c004
  	[12]  1, W15管脚选择为输出模式
GPIOCOUT    0xc001c000
  	[12]  0/1, W15输出低/高电平
  
总结:软件控制硬件的媒介就是特殊功能寄存器
  特殊功能寄存器每个bit含义要查芯片的手册

C语言回顾:

	1.指针:		
		int a;
		a = 100;
		*(&a) = 100;
		*((int *) 0x10000000) = 100;
		地址 (volatile int *) 0x10000000 
		访问 *(volatile int *) 0x10000000
		
	2.位操作:
		// 错误的 误将其他管脚的功能改变了
		 //应该只改变需要改变的位,其他的位应该保持不变.		
		*(volatile int *) 0x10000000 = 0x01000000; //bit 24位置1,bit 25位置 0 
		// 正确做法 先将 24 25 位置0,再将 24位置1
		 *(volatile int *) 0x10000000 &= 0xfcffffff;   
		 *(volatile int *) 0x10000000 |= 0x01000000;
		 //  标准做法:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘德华海淀分华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值