打印

下面这段程序是什么意思?我是新手

[复制链接]
2318|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aizhijunmao|  楼主 | 2013-4-9 15:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, ADDA, AD, AN, IO
// Initialize the keys about pressure add and subtract
    PIO_SetInput(1 << PRESSURE_ADD_KEY, 1, 0);
    PIO_SetInput(1 << PRESSURE_SUB_KEY, 1, 0);
    PIO_SetInput(1 << PRESSURE_LEVEL1_KEY, 1, 0);
    PIO_SetInput(1 << PRESSURE_LEVEL2_KEY, 1, 0);
    PIO_SetInput(1 << PRESSURE_LEVEL3_KEY, 1, 0);
    PIO_SetInput(1 << PRESSURE_LEVEL4_KEY, 1, 0);
    // Intialize the LEDs about pressure add and subtract
    PIO_SetOutput(1 << PRESSURE_ADD_LED, 1, 0, GPIO_PULLUP);
    PIO_SetOutput(1 << PRESSURE_SUB_LED, 1, 0, GPIO_PULLUP);
    // Initialize the varialbe for pressure
    Pressure_Ka = 0.0; // determined by test
    Pressure_Kb = 0.0; // determined by test
    Pressure_Value = 0.0;
    // Initialize press add and subtract processing variables
    Press_SubInput = FALSE;
    SubProcess_Flag = FALSE;
    SubProcess_Value = 0.0;
    SubProcess_Timer = 0;

相关帖子

沙发
dongyinqing1| | 2013-4-9 16:39 | 只看该作者
不懂的路过!

使用特权

评论回复
板凳
dirtwillfly| | 2013-4-9 17:02 | 只看该作者
不知道PIO_SetInput函数的原型,看不懂

使用特权

评论回复
地板
aizhijunmao|  楼主 | 2013-4-9 17:02 | 只看该作者
求那位老师指点指点!!!

使用特权

评论回复
5
aizhijunmao|  楼主 | 2013-4-9 17:23 | 只看该作者
//------------------------------------------------------------------------------
/// Configures one pin of a GPIOA controller as inputs. Optionally, the
/// corresponding internal pull-up(s) and glitch filter(s) can be enabled.
//------------------------------------------------------------------------------
void PIO_SetInput(unsigned int mask, unsigned char enablePullUp,
                         unsigned char enableFilter)
{
    // Disable interrupt
    AT91C_BASE_PIOA->PIO_IDR = mask;

    // Enable pull-up if necessary
    if (enablePullUp)
    {   
        AT91C_BASE_PIOA->PIO_PPUER = mask;
    }
    else
    {   
        AT91C_BASE_PIOA->PIO_PPUDR = mask;
    }

    // Enable filter if necessary
    if (enableFilter)
    {   
        AT91C_BASE_PIOA->PIO_IFER = mask;
    }
    else
    {   
        AT91C_BASE_PIOA->PIO_IFDR = mask;
    }

    // Configure pin as input
    AT91C_BASE_PIOA->PIO_ODR = mask;
    AT91C_BASE_PIOA->PIO_PER = mask;
}

//------------------------------------------------------------------------------
/// Configures one pin of a GPIOA controller as outputs, with the given default
/// value. Optionally, the multi-drive feature can be enabled on the pin(s).
//------------------------------------------------------------------------------
void PIO_SetOutput(unsigned int mask, unsigned char defaultValue,
                   unsigned char enableMultiDrive,
                   unsigned char enablePullUp)
{
    // Disable interrupt
    AT91C_BASE_PIOA->PIO_IDR = mask;

    // Enable pull-up if necessary
    if (enablePullUp)
    {   
        AT91C_BASE_PIOA->PIO_PPUER = mask;
    }
    else
    {   
        AT91C_BASE_PIOA->PIO_PPUDR = mask;
    }

    // Enable multi-drive if necessary
    if (enableMultiDrive)
    {   
        AT91C_BASE_PIOA->PIO_MDER = mask;
    }
    else
    {   
        AT91C_BASE_PIOA->PIO_MDDR = mask;
    }

    // Set default value
    if (defaultValue)
    {
        AT91C_BASE_PIOA->PIO_SODR = mask;
    }
    else
    {
        AT91C_BASE_PIOA->PIO_CODR = mask;
    }

    // Configure pin as output
    AT91C_BASE_PIOA->PIO_OER = mask;
    AT91C_BASE_PIOA->PIO_PER = mask;
}

使用特权

评论回复
6
qx19921014| | 2013-4-9 21:41 | 只看该作者

使用特权

评论回复
7
rgh111| | 2013-4-9 23:00 | 只看该作者
这段程序,估计大神们也觉得没意思:curse:

使用特权

评论回复
8
天命风流| | 2013-4-11 15:27 | 只看该作者
路过   看一下

使用特权

评论回复
9
zero-minmin| | 2013-4-12 00:10 | 只看该作者
感觉这一块,没有整体很难看懂也。

使用特权

评论回复
10
szyonggui| | 2013-4-12 09:26 | 只看该作者
这个程序是STM32的人机交际的应用初始化程序吧

使用特权

评论回复
评论
江枫渔火 2013-4-12 14:32 回复TA
是AT91系列的芯片 
11
江枫渔火| | 2013-4-12 14:43 | 只看该作者
// Initialize the keys about pressure add and subtract
PIO_SetInput(1 << PRESSURE_ADD_KEY, 1, 0);////////////////根据5楼说明,这函数是设置端口A的引脚输入特性的,第一个参数是引脚号(0~31),第二个参数是表示是否上拉,第三参数表示是否开启滤波
PIO_SetInput(1 << PRESSURE_SUB_KEY, 1, 0);
PIO_SetInput(1 << PRESSURE_LEVEL1_KEY, 1, 0);
PIO_SetInput(1 << PRESSURE_LEVEL2_KEY, 1, 0);
PIO_SetInput(1 << PRESSURE_LEVEL3_KEY, 1, 0);
PIO_SetInput(1 << PRESSURE_LEVEL4_KEY, 1, 0);
// Intialize the LEDs about pressure add and subtract
PIO_SetOutput(1 << PRESSURE_ADD_LED, 1, 0, GPIO_PULLUP);/////这个函数是设置A端口引脚的输出特性,参数1为引脚号,参数2为默认电平,参数3为是否开启多驱动(开漏驱动),参数4为是否上拉。
PIO_SetOutput(1 << PRESSURE_SUB_LED, 1, 0, GPIO_PULLUP);
// Initialize the varialbe for pressure
Pressure_Ka = 0.0; // determined by test/////////////////////////////////////////////////////剩下的就是些变量赋值了,具体作用就看程序里怎么用了
Pressure_Kb = 0.0; // determined by test
Pressure_Value = 0.0;
// Initialize press add and subtract processing variables
Press_SubInput = FALSE;
SubProcess_Flag = FALSE;
SubProcess_Value = 0.0;
SubProcess_Timer = 0;

使用特权

评论回复
12
ljing1963| | 2013-4-12 16:13 | 只看该作者
路过

使用特权

评论回复
13
sea313081574| | 2013-4-12 17:19 | 只看该作者
,能不能整理一下发上来,看了就恶心。

使用特权

评论回复
14
sedatefire| | 2013-4-13 02:16 | 只看该作者
这段代码,你不必纠结,单从函数名来讲,
1.初始化io的状态。输入还是输出,还有初值。上拉输出等等。
2.模块内全局变量初值的设置。

没了PIO_Setxxxxx这两个函数,如果是官方发布的库函数,细节你不必关心,了解输入参数的含义就好。

使用特权

评论回复
15
sedatefire| | 2013-4-13 02:17 | 只看该作者
抱歉,我来晚了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

14

帖子

0

粉丝