易冰 发表于 2012-5-2 17:51:26

请教:AT91SAM7S64在设置IO口输入时必须要开时钟吗?

请教:AT91SAM7S64在设置IO口输入时必须要开时钟吗?
    最近在学习AT91SAM7S64,准备写一个按键程序,需要将IO口设置为输入,可参考了一些资料后,发现有的资料中说设置IO口输入时必须要开时钟。(*AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;// 使能系统时钟寄存器的处理器时钟 *AT91C_PMC_PCER = 1 << AT91C_ID_PIOA;// 使能PIOA 外围时钟)。
希望哪位高手帮我解答下。
另外我希望有热心的朋友提供下这款ARM芯片在使用IO口时有什么快捷的方法。

allenke 发表于 2012-5-2 21:45:41

是的,必须使能相应的peripheral clock。

易冰 发表于 2012-5-3 08:35:41

谢谢楼上的朋友,我刚学习ARM,这两天参照着AT91SAM7S64的DATASHEET,看别人写的程序,那些对IO口的配置似懂非懂,越看越糊涂,希望楼上的朋友多多指教。不胜感激

易冰 发表于 2012-5-3 08:42:18

__inline void AT91F_PIO_CfgOutput(
        AT91PS_PIO pPio,             // \arg pointer to a PIO controller
        unsigned int pioEnable)      // \arg PIO to be enabled
{
        pPio->PIO_PER = pioEnable; // Set in PIO mode
        pPio->PIO_OER = pioEnable; // Configure in Output
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PIO_CfgInput
//* \brief Enable PIO in input mode
//*----------------------------------------------------------------------------
__inline void AT91F_PIO_CfgInput(
        AT91PS_PIO pPio,             // \arg pointer to a PIO controller
        unsigned int inputEnable)      // \arg PIO to be enabled
{
        // Disable output
        pPio->PIO_ODR= inputEnable;
        pPio->PIO_PER= inputEnable;
}

AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, CC1100_MOSI|CC1100_SCK|CC1100_CSN|CC1100_TXEN|CC1100_RXEN|CC1100_POWER);//设置为输出
AT91F_PIO_CfgPullup( AT91C_BASE_PIOA, CC1100_MOSI|CC1100_SCK|CC1100_CSN|CC1100_TXEN|CC1100_RXEN|CC1100_POWER);//启用上拉电阻

AT91F_PIO_CfgInput( AT91C_BASE_PIOA,CC1100_MISO|CC1100_GDO2|CC1100_GDO0);//设置为输入
AT91F_PIO_CfgPullup( AT91C_BASE_PIOA, CC1100_MISO|CC1100_GDO2|CC1100_GDO0);//启用上拉电阻
页: [1]
查看完整版本: 请教:AT91SAM7S64在设置IO口输入时必须要开时钟吗?