文章目录
重映射函数
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
//用来解除调试端口的复用
-
@arg GPIO_Remap_SWJ_NoJTRST : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST
- SWJ–SWD和JTAG两种调试方式; NoJTRST解除JTRST引脚复用(对应pb4引脚)
-
@arg GPIO_Remap_SWJ_JTAGDisable : JTAG-DP Disabled and SW-DP Enabled
- 解除JTAG调试端口的复用(PA15、PB3、PB4三个端口变回GPIO;但PA13、PA14仍为SWD调试端口)
-
@arg GPIO_Remap_SWJ_Disable : Full SWJ Disabled (JTAG-DP + SW-DP)
- 将SWD和JTAG调试端口全部解除(PA13 VSS_2 VDD_2 PA14 PA15 PB3 PB4 五个引脚全部变为普通GPIO口,无调试功能)
中断函数
主程序中查看和清除标志位
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
void EXTI_ClearFlag(uint32_t EXTI_Line);
中断函数里查看和清除标志位,用以下函数
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
void EXTI_ClearITPendingBit(uint32_t EXTI_Line); //清除中断挂起标志位
定时中断基本结构
Timer
时基单元用TimeBase函数
中断输入控制用ITconfig函数
运行控制用TIM_CMD函数
OC函数
重要
重要
pwm的基本结构
IC函数
给输入捕获结构体赋予一个初始值
void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct); //给输入捕获结构体赋予一个初始值
选择从模式触发源
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); //选择从模式触发源
选择主模式输出触发源trgo
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); //选择主模式输出触发源trgo
选择从模式
void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode); //选择从模式
上图分别对应以上三个函数
配置分频器
//分别单独配置通道1、2、3、4的分频器,结构体也可以配置
void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
写入CCR(多用在输出比较模式)
//分别写入4个CCR(oc模式下,ccr只写)
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);
读取CCR通道
//分别读取4个通道的CCR(输入捕获模式下,只读)
uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); //结构体配置输入捕获单元函数(初始化输入捕获单元)单一配置一个通道
void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); //可以配置两个通道,结构体输入捕获单元函数
void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct); //输入捕获结构体赋予初始值
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); //选择输入触发源TRGI
void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource); //选择输出触发源TRGO(主模式输出)
void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode); ///选择从模式
IC测频率结构
IC测频率和占空比结构
定时器编码器接口配置
void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
选择定时器,选择编码器模式,选择通道1和通道2的电平极性
USART函数整理
配置同步时钟输出(时钟是否输出,时钟的极性相位等参数)
void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
开启usart到dma的触发通道
void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);
发送和接受数据(重要)
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); 写DR寄存器
uint16_t USART_ReceiveData(USART_TypeDef* USARTx); 读DR寄存器
标志位相关函数
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
引脚重映射(手册8.3,表43)
b站 江科协p16 30min讲解
使用AFIO 首先打开AFIO时钟
使用gpio_pinremapconfig函数,引脚重映射配置