32单片机常用函数整理

重映射函数

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函数,引脚重映射配置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值