//全IO口的初始化功能
// 2013/07/31 14:50
// 功能如下,下为配置数据*/
//GPIOx GPIOA~G
//Pin IO口的引脚 0-15
//Mode 对应的IO口引脚的模式(输出不同Hz模式主要因为引脚所要驱动的外设电路决定,如串口高速)
//输入模式 0 模拟输入 4 浮空输入 8 上下拉输入 C 保留
//10MHz输出 1 通用推挽 5 通用开漏 9 复用推挽 D 复用开漏
//2 MHz输出 2 通用推挽 6 通用开漏 A 复用推挽 E 复用开漏
//50MHz输出 3 通用推挽 7 通用开漏 B 复用推挽 F 复用开漏
//boolbit 引脚的初始化高低电平 0-1
void GPIOxPin_init(GPIO_TypeDef * GPIOx,u8 Pin,u8 Mode,u8 boolbit)
{
u8 x;
x=(u8)(((u16)(u32)GPIOx)>>10);
RCC->APB2ENR|=1<<x;
if(Pin<8)
{
GPIOx->CRL&=~(0x0F<<(Pin<<2));
GPIOx->CRL|=Mode<<(Pin<<2);
}
else
{
Pin-=8;
GPIOx->CRH&=~(0x0F<<(Pin<<2));
GPIOx->CRH|=Mode<<(Pin<<2);
}
GPIOx->ODR=1<<  in;
}
一直潜水看帖,算啦,,分享一段代码吧。
一个函数解决了GPIO初始的问题,时钟使能什么滴都有了
高手勿喷
|