首先找出板子电路图,以LED为例
接下来就是电路的网标:
到对应的芯片手册里区找寄存器的描述
通过对相应寄存器的操作来操作LED灯:
首先将对应的寄存器的地址注册成一个文件:reg.h
1
2
3
4
5 #define gpiobase 0x11000000
6
7 #define GPM4CON (*(volatile unsigned long *)(gpiobase + 0x02E0))
8 #define GPM4DAT (*(volatile unsigned long *)(gpiobase + 0x02E4))
9
10 #define GPX3CON (*(volatile unsigned long *)(gpiobase + 0x0C60))
11 #define GPX3DAT (*(volatile unsigned long *)(gpiobase + 0x0C64))
12
13 #define GPD0CON (*(volatile unsigned long *)(gpiobase + 0x4000A0))
14 #define GPD0DAT (*(volatile unsigned long *)(gpiobase + 0x4000A4))
然后是对寄存器的赋值:
1
2
3 #include "reg.h"
4
5 int(*delay)(int)=0xc3e25f90;
6 int(*print)(char*)=0xc3e114d8;
7
8 void led_off(void);
9 void led_on(void);
10 void pwm_off(void);
11 void pwm_on(void);
12
13 int test(void)
14 {
15 GPX3CON &= ~(0xf << 8);//设置12位K2为0
16 GPX3CON &= ~(0xf << 12);//设置12位K2为0
17 while(1)
18 {
19 if(GPX3DAT & (1 << 2))//如果3_2口为1,则说明按键没按
20 {
21 led_off();
22 print("lease inputn");
23
24 }
25 else
26 {
27 led_on();
28 print("K1 put down ,LED TURN ONn");
29 }
30 if(GPX3DAT & (1 << 3))//如果3_2口为1,则说明按键没按
31 {
32 pwm_off();
33 print("lease inputn");
34 }
35 else
36 {
37 pwm_on();
38 delay(5000);
39 print("K2 put down ,BWM: TURN ONn");
40 }
41 }
42 return 0;
43 }
44
45 void pwm_on(void)
46 {
47 GPD0CON &= ~0xffff;
48 GPD0CON |= 0x1;//配置寄存器为2
49 GPD0DAT |= 0x1;//date=0xf
50 }
51
52 void pwm_off(void)
53 {
54 GPD0CON &= ~0xffff;
55 GPD0CON |= 0x0;
56 // GPD0DAT &=0x0 ;//date=0xf
57
58 }
59 void led_off(void)
60 {
61 GPM4CON &= ~0xffff;//清零
62 GPM4CON |= 0x0000;//0---3位清零
63 GPM4DAT |= 0x0;//date=0xf关闭置一
64 }
65
66 void led_on(void)
67 {
68 GPM4CON &= ~0xffff;
69 GPM4CON |= 0x1111;//配置寄存器3-0-----3-3全为1111,全为输出模式
70 GPM4DAT &= ~0x1;//打开置0-4位为0000
71 }
72
这里写了一个while(1)循环,如果没有按键操作的时候将会一直打印“please input”,当K1按下的时候LED会两起,输出“print("K1 put down ,LED TURN ONn");”当K2按下的时候,蜂鸣器会响起,然后打印 print("K2 put down ,BWM: TURN ONn");
dnw下载到板子测试程序:
K1按下:
K2按下:
上一篇:ARM4412的MMU内存管理单元
下一篇:基于S3C2440A定时器的正确使用方法
推荐阅读最新更新时间:2024-11-11 23:36
设计资源 培训 开发板 精华推荐
- UC2844B 升压电荷泵转换器的典型应用
- 基于STGIB10CH60TS-L SLLIMM™2nd系列IPM的1200 W电机控制电源板
- AD8548ARZ 4 mA至20 mA电流环路变送器的典型应用电路
- 低创ESP32_RGB控制器。
- LT3751 的典型应用 - 具有调节功能的高压电容器充电器控制器
- 消费类电子产品 Z8 MCU 开发系统
- LTC2992IMS-1 双向 30V 至 300V 高侧功率监视器的典型应用
- ATGM332D板载罗盘GPS模块
- 使用具有 USB On-The-Go、过压和反向电压保护功能的 LTC4160EUDC-1 高效开关电池充电器的典型应用
- LT1612、5V 至 3.3V/500mA 转换器