在key1.c的基础上进行对adc1.c进行编写
首先将文件里面的key全部改为adc
再修改一下设备号
按键和adc的区别是什么,按键只需要按一下就触发了,并且不需要返回一个值出来,
adc要初始化,启动,返回值
以下是裸机adc的代码:
#include <s3c2440.h>
#include "adc.h"
void adc_init(void)
{
ADCCON = (1 << 14) | (49 << 6) | (1 << 1);
}
unsigned short adc_read(void)
{
unsigned short data = ADCDAT0; //读取数据,启动转换
while(!(ADCCON & (1 << 15))); //判断是否转换结束,结束后跳出while循环
data = ADCDAT0 & 0x3ff;
return data;
}//这是读启动,先读一下,然后启动转换,判断是否转换结束,结束后跳出循环,返回读取的数据
1.因为我们要是有寄存器,所以定义寄存器的地址,ADCCON和ADCDAT0。
2.因为ADCCON和ADCDAT0是俩个常量,所以不能直接给赋值,所以定义俩个指针变量。
给定义的这个变量赋值,使用的是ioremap,获取ADCCON的实际物理地址。
这里在注销的时候要把这个变量释放掉。
上面的裸机代码,是读启动,先读一下,然后启动转换,判断是否转换结束,结束后跳出循环,返回读取的数据,在驱动里面就不能这样了,万一转换不结束,就会一直在等,这次就不要读启动了,用手动的启动。