关于stm32单个引脚多个功能时如何使用其中某个功能?
假如一个引脚有串口、IIC、定时器的功能那么怎么选择其中IIC作为引脚功能来用。还有如果我要使用的IIC功能只有这个引脚有但是这个引脚又被串口占用,是不是只能将IIC功能...
假如一个引脚有串口、IIC、定时器的功能那么怎么选择其中IIC作为引脚功能来用。
还有如果我要使用的IIC功能只有这个引脚有但是这个引脚又被串口占用,是不是只能将IIC功能映射到其他角上去。具体怎么映射?
求大佬解答 展开
还有如果我要使用的IIC功能只有这个引脚有但是这个引脚又被串口占用,是不是只能将IIC功能映射到其他角上去。具体怎么映射?
求大佬解答 展开
1个回答
展开全部
一个引脚作为什么功能使用,除了两个调试引脚,其他的默认都是GPIO,如果要使用其他功能,那就需要配置复用寄存器。
如果某个功能的引脚被占用了,那就需要映射到其他IO口,也就是配置重映射寄存器。如果非要用这个引脚的话,也可以分时复用。
具体操作可以参考芯片手册,如果项目使用的是库或者操作系统,那就直接调用配置函数就行了。
如果某个功能的引脚被占用了,那就需要映射到其他IO口,也就是配置重映射寄存器。如果非要用这个引脚的话,也可以分时复用。
具体操作可以参考芯片手册,如果项目使用的是库或者操作系统,那就直接调用配置函数就行了。
追问
比如我配置引脚为复用功能,那他有三个复用功能我怎么知道是复用到哪个去? 是不是还要开启相应的外设的时钟。
还有能具体讲一下如何映射引脚功能么?好像时钟开启,引脚映射有什么顺序要求的
追答
复用可以参考下面这个,配置复用寄存器就行了。
//GPIO复用设置
//GPIOx:GPIOA~GPIOI.
//BITx:0~15,代表IO引脚编号.
//AFx:0~15,代表AF0~AF15.
//AF0~15设置情况(这里仅是列出常用的,详细的请见407数据手册,56页Table 7):
//AF0:MCO/SWD/SWCLK/RTC AF1:TIM1/TIM2; AF2:TIM3~5; AF3:TIM8~11
//AF4:I2C1~I2C3; AF5:SPI1/SPI2; AF6:SPI3; AF7:USART1~3;
//AF8:USART4~6; AF9;CAN1/CAN2/TIM12~14 AF10:USB_OTG/USB_HS AF11:ETH
//AF12:FSMC/SDIO/OTG/HS AF13:DCIM AF14: AF15:EVENTOUT
void GPIO_AF_Set(GPIO_TypeDef* GPIOx,u8 BITx,u8 AFx)
{
GPIOx->AFR[BITx>>3]&=~(0X0FAFR[BITx>>3]|=(u32)AFx<<((BITx&0X07)*4);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询