高级会员
- 积分
- 659
- 金钱
- 659
- 注册时间
- 2014-5-11
- 在线时间
- 87 小时
|
void GPIO_Muxc_Cfg(u8 iox,u8 altx,u8 pupdkp,u8 speed,u8 dse,u8 od)
{
u32 tpadreg=1<<12; //默认使能上拉/下拉/保持模式
if(iox>=200)CCM->CCGR2|=3<<2; //开启IOMUXC SNVS时钟(配置GPIO5时需要设置)
if(pupdkp<4)
tpadreg|=((u32)pupdkp<<14)|(1<<13); //设置上拉/下拉,上下拉模式
else if(pupdkp==5)
tpadreg&=~(1<<12); //禁止:上拉、下拉、保持
tpadreg|=(u32)od<<11; //开漏模式设置
tpadreg|=speed<<6; //设置IO速度
tpadreg|=dse<<3; //设置驱动能力为dse
if(speed)tpadreg|=1<<0; //如果速度大于50M,则设置高摆率,否则低摆率
if(iox<200) //GPIO1~4配置
{
IOMUXC->SW_MUX_CTL_PAD[iox]=(0<<4)|altx; //设置SW_MUX_CTL寄存器,关闭SION功能,设置ALTx
IOMUXC->SW_PAD_CTL_PAD[iox]=tpadreg; //设置SW_PAD_CTL寄存器
}
else //GPIO5配置
{
*(vu32*)(0X400A8000+4*(iox-200))=(0<<4)|altx; //设置SW_MUX_CTL寄存器,关闭SION功能,设置ALTx
*(vu32*)(0X400A8018+4*(iox-200))=tpadreg; //设置SW_PAD_CTL寄存器
}
}
if(iox>=200)CCM->CCGR2|=3<<2; //开启IOMUXC SNVS时钟(配置GPIO5时需要设置)
这里如果要开启IOMUXC SNVS时钟 是不是应该 CCM->CCGR2|=3<<4; ???
|
|