cc2541 gpio通用gpio和adc的使用

来源:互联网 发布:环信java需要哪些jar包 编辑:程序博客网 时间:2024/06/05 02:18

今天需要对cc2541 gpio和adc做几个测试,就学习了下怎么使用gpio和adc


1:ADC的使用

参考链接:http://www.cnblogs.com/chenzhao207/p/4539197.html

cc2541 p0口是adc口,读取代码如下

APCFG |= 1 << 0 ;//设置使用p0.0作为adc读入

uint16 vddvalue = HalAdcRead(HAL_ADC_CHANNEL_0, HAL_ADC_RESOLUTION_10);

HAL_ADC_CHANNEL_0指的是p0.0

HAL_ADC_RESOLUTION_10指的是分辨率,把电压分为511份

当cc2541供3.3V测试时,当p0.0输入3.3v电压时,vddvalue是511

当cc2541供3.3v测试时,当p0.0输入1.6v电压时,vddvalue是256

当cc2541供2.0v测试时,当p0.0输入2.0v电压时,vddvalue是511

当cc2541供2.0v测试时,当p0.0输入1.0v电压时,vddvalue是256

结论:cc2541电压内的电压基准是以供给cc2541供的电算的


2:GPIO的使用

参考链接:http://blog.sina.com.cn/s/blog_ba08e8e00102vg0d.html

cc2541 p1口可以作为普通gpio口,然后拉高拉低p1.0 1.1 1.2 1.3看效果

    P1SEL = 0;//暴力设置为普通gpio
    P1DIR &= ~(1 << 0);
    P1DIR &= ~(1 << 1);//设置为输入
    P1DIR &= ~(1 << 2);
    P1DIR &= ~(1 << 3);

if(P1_0)//读p1.0
    HalUARTWrite(HAL_UART_PORT_0,"p1.0 is high\r\n",strlen("p1.0 is high\r\n"));
 else
     HalUARTWrite(HAL_UART_PORT_0,"p1.0 is low\r\n",strlen("p1.0 is low\r\n"));

有一个问题是,p1.1和p1.3在我的代码里没办法被设置,可能是被占用的原因吧

结论:

     当给cc2541供3.3v电压时,给gpio的电压必须大于2v才会被认为是高电平

     当给cc2541供2.0v电压时,给gpio的电压大于1.5v就会被cc2541认为是高电压了


0 0
原创粉丝点击