时钟
APB1
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
:使能或失能 APB1 时钟
参数 | 可赋值 | 描述 |
RCC_APB1Periph | RCC_APB1Periph_TIM2 RCC_APB1Periph_TIM3 RCC_APB1Periph_TIM4 | RCC_APB1Periph_TIM5 RCC_APB1Periph_TIM6 RCC_APB1Periph_TIM7 |
RCC_APB1Periph_TIM12 RCC_APB1Periph_TIM13 RCC_APB1Periph_TIM14 | RCC_APB1Periph_WWDG RCC_APB1Periph_SPI2 RCC_APB1Periph_SPI3 | |
RCC_APB1Periph_USART2 RCC_APB1Periph_USART3 RCC_APB1Periph_USART4 | RCC_APB1Periph_USART5 RCC_APB1Periph_I2C1 RCC_APB1Periph_I2C2 | |
RCC_APB1Periph_USB RCC_APB1Periph_CAN1 RCC_APB1Periph_BKP | RCC_APB1Periph_PWR RCC_APB1Periph_DAC RCC_APB1Periph_CEC | |
NewState | ENABLE | 使能 |
DISABLE | 失能 |
APB2
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
:使能或失能 APB2 时钟
参数 | 可赋值 | 描述 |
RCC_APB2Periph | RCC_APB2Periph_AFIO RCC_APB2Periph_GPIOA RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC RCC_APB2Periph_GPIOD RCC_APB2Periph_GPIOE |
RCC_APB2Periph_GPIOF RCC_APB2Periph_GPIOG RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 RCC_APB2Periph_TIM1 RCC_APB2Periph_SPI1 | |
RCC_APB2Periph_TIM8 RCC_APB2Periph_USART1 RCC_APB2Periph_ADC3 | RCC_APB2Periph_TIM15 RCC_APB2Periph_TIM16 RCC_APB2Periph_TIM17 | |
RCC_APB2Periph_TIM9 RCC_APB2Periph_TIM10 RCC_APB2Periph_TIM11 | ||
NewState | ENABLE | 使能 |
DISABLE | 失能 |
AHB
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
:使能或失能 AHB 时钟
参数 | 可赋值 | 描述 |
RCC_AHBPeriph | RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2 |
RCC_AHBPeriph_SRAM | RCC_AHBPeriph_FLITF | |
RCC_AHBPeriph_CRC | RCC_AHBPeriph_OTG_FS | |
RCC_AHBPeriph_ETH_MAC | RCC_AHBPeriph_ETH_MAC_Tx | |
RCC_AHBPeriph_ETH_MAC_Rx | RCC_AHBPeriph_FSMC | |
RCC_AHBPeriph_SDIO | ||
NewState | ENABLE | 使能 |
DISABLE | 失能 |
💡Tip:如果同个端口需要同时对不同引脚设置等 可以使用 按位或( | ) 来达成效果
GPIO 结构体(GPIO_InitTypeDef)
GPIO_Mode | GPIO_Mode_AIN | 模拟输入 |
GPIO_Mode_IN_FLOATING | 浮动输入 | |
GPIO_Mode_IPD | 下拉输入 | |
GPIO_Mode_IPU | 上拉输入 | |
GPIO_Mode_Out_OD | 开漏输出 | |
GPIO_Mode_Out_PP | 推挽输出 | |
GPIO_Mode_AF_OD | 复用开漏输出,不仅开漏且 IO 口复用别的功能 | |
GPIO_Mode_AF_PP | 复用推挽输出,不仅推挽且 IO 口复用别的功能 | |
GPIO_Pin | GPIO_Pin_x | x:引脚号 |
GPIO_Speed | GPIO_Speed_2MHz | 时钟 2MHz 速度 |
GPIO_Speed_10MHz | 时钟 10MHz 速度 | |
GPIO_Speed_50MHz | 时钟 50MHz 速度 |
Tips
- 普通功能的IO,通常2M
- 如果一个IO用作I2C通信,速度通常就10K到400K,选10M
- 如果是用作SPI功能,可能会到20M速度,那选50M
GPIO 库函数
GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
:用结构体参数来初始化 GOIO 口
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_InitStruct | GPIO_InitTypeDef* | 指向 GPIO_InitTypeDef 结构体地址 |
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
:读取单个输入引脚的状态
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_Pin | uint16_t | 读取的引脚编号,如GPIO_Pin_x,x:0~15 |
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
:读取指定的 GPIO 端口的所有引脚输入状态
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
:读取单个输出引脚的状态
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_Pin | uint16_t | 读取的引脚编号,如GPIO_Pin_x,x:0~15 |
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
:读取指定 GPIO 端口的所有引脚的当前输出状态
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
:将指定的端口设置为高电平
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_Pin | uint16_t | 读取的引脚编号,如GPIO_Pin_x,x:0~15 |
GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
:将指定的端口设置为低电平
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_Pin | uint16_t | 读取的引脚编号,如GPIO_Pin_x,x:0~15 |
GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
:将指定的端口设置为指定电平
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
GPIO_Pin | uint16_t | 读取的引脚编号,如GPIO_Pin_x,x:0~15 |
BitVal | BitAction | Bit_RESET:置低电平,Bit_SET:置高电平 |
GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
:设置整个 GPIO 端口(Port)所有引脚状态
参数 | 类型 | 描述 |
GPIOx | GPIO_TypeDef* | 指向要初始化的GPIO端口的指针,如GPIOA |
PortVal | uint16_t | 一个16位的整数值,每一位对应端口一个引脚(1:高电平 0:低电平) |
GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
:配置 GPIO 引脚与外部中断线(EXTI)的映射关系
参数 | 类型 | 描述 |
GPIO_PortSource | uint16_t | 指定 GPIO 端口,GPIO_PortSourceGPIOx(x:A~G) |
GPIO_PinSource | uint16_t | 指定 GPIO 引脚号,GPIO_PinSourcex(x:0~15) |
外部中断结构体(EXTI_InitTypeDef)
EXTI_Line | EXTI_Linex(x:0~19) | 设置中断线 |
EXTI_Mode | EXTI_Mode_Interrupt | 设置中断模式 |
EXTI_Mode_Event | 设置事件模式 | |
EXTI_Trigger | EXTI_Trigger_Rising | 上升沿触发 |
EXTI_Trigger_Falling | 下降沿触发 | |
EXTI_Trigger_Rising_Falling | 双边沿触发 | |
EXTI_LineCmd | ENABLE(使能)、DISABLE(不使能) | 启用或禁用 EXTI 线 |
外部中断 库函数
EXTI_DeInit(void)
:将外部中断/事件控制器(EXTI)的配置恢复到默认状态
EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
:根据结构体中的参数来初始化中断
参数 | 类型 | 描述 |
EXTI_InitStruct | EXTI_InitTypeDef* | 指向 EXTI_InitTypeDef 结构体的地址 |
EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
:把参数传递的结构体赋一个默认值
参数 | 类型 | 描述 |
EXTI_InitStruct | EXTI_InitTypeDef* | 指向 EXTI_InitTypeDef 结构体的地址 |
EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
:软件手动触发指定的外部中断线 ,即使没有实际的外部硬件信号(如引脚电平变化)也可模拟中断事件
参数 | 类型 | 描述 |
EXTI_Line | uint32_t | 中断线,EXTI_Linex(x:0~19) |
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
:主程序中获取指定标志位是否置 1
返回值
-
- SET:标志位已置位(表示中断已触发)
- RESET:标志位未置位(表示中断未触发)
参数 | 类型 | 描述 |
EXTI_Line | uint32_t | 中断线,EXTI_Linex(x:0~19) |
EXTI_ClearFlag(uint32_t EXTI_Line)
:主程序中清除外部中断线标志位
参数 | 类型 | 描述 |
EXTI_Line | uint32_t | 中断线,EXTI_Linex(x:0~19) |
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
:中断服务函数中获取指定标志位是否置 1
返回值
-
- SET:标志位已置位(表示中断已触发)
- RESET:标志位未置位(表示中断未触发)
参数 | 类型 | 描述 |
EXTI_Line | uint32_t | 中断线,EXTI_Linex(x:0~19) |
EXTI_ClearITPendingBit(uint32_t EXTI_Line)
:中断服务函数中清除外部中断挂起标志位
参数 | 类型 | 描述 |
EXTI_Line | uint32_t | 清除挂起标志位的 EXTI 线,EXTI_Linex(x:0~19) |
NVIC 结构体(NVIC_InitTypeDef)
NVIC_PriorityGroup_0
:4 位抢占优先级,0 位子优先级,4 位则设置 16 个不同级别NVIC_PriorityGroup_1
:3 位抢占优先级,1 位子优先级NVIC_PriorityGroup_2
:2 位抢占优先级,2 位子优先级NVIC_PriorityGroup_3
:1 位抢占优先级,3 位子优先级NVIC_PriorityGroup_4
:0 位抢占优先级,4 位子优先级
NVIC_IRQChannel (在stm32f10x.h 中查看需要的中断对应的通道是哪个) | EXTIx_IRQn(x:1~4)、EXTI9_5_IRQn、EXTI15_10_IRQn | 外部中断通道(1~15) |
USARTx_IRQn(x:1~3) | 串口中断通道(1~3) | |
TIMx_IRQn(x:2~7) | 定时器中断通道 | |
NVIC_IRQChannelPreemptionPriority | 数字 | 设置抢占优先级 |
NVIC_IRQChannelSubPriority | 数字 | 设置子优先级 |
NVIC_IRQChannelCmd | ENABLE(使能)、DISABLE(不使能) | 使能中断通道 |
NVIC 库函数
NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
:根据结构体中的参数来初始化 NVIC
参数 | 类型 | 描述 |
NVIC_InitStruct | NVIC_InitTypeDef* | 指向 NVIC_InitTypeDef 结构体的地址 |
NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
:配置 NVIC 的优先级分组
参数 | 类型 | 描述 |
NVIC_PriorityGroup | uint32_t | NVIC_PriorityGroup_0,无抢占优先级,16 个子优先级 NVIC_PriorityGroup_1,2 个抢占优先级,8 个子优先级 NVIC_PriorityGroup_2,4 个抢占优先级,4 个子优先级 NVIC_PriorityGroup_3,8 个抢占优先级,2 个子优先级 NVIC_PriorityGroup_4,16 个抢占优先级,无子优先级 |
外部中断 服务函数
在 startup_stm32f10x_hd.s 里面
中断触发函数 |
EXTI0_IRQHandler |
EXTI1_IRQHandler |
EXTI2_IRQHandler |
EXTI3_IRQHandler |
EXTI4_IRQHandler |
EXTI9_5_IRQHandler |
EXTI15_10_IRQHandler |
定时器结构体(TIM_TimeBaseInitTypeDef)
TIM_ClockDivision | TIM_CKD_DIV1 | 时钟不分频 |
TIM_CKD_DIV2 | 时钟分频 2 | |
TIM_CKD_DIV4 | 时钟分频 4 | |
TIM_CounterMode | TIM_CounterMode_Up | 向上计数 |
TIM_CounterMode_Down | 向下计数 | |
TIM_CounterMode_CenterAlignedx(x:1~3) | 三种中心计数 | |
TIM_Period | 0~65535 | 自动重装载值ARR |
TIM_Prescaler | 0~65535 | 预分频值 PSC |
TIM_RepetitionCounter | 0x00 ~ 0xFF | 重复计数(仅高级定时器) |
输出比较和 PWM 结构体(TIM_OCInitTypeDef)
TIM_OCIdleState (只需高级定时器配置) | TIM_OCIdleState_Reset | 空闲时输出低电平 |
TIM_OCIdleState_Set | 空闲时输出高电平 | |
TIM_OCMode | TIM_OCMode_Timing | 仅触发中断/DMA,不改变输出引脚电平(用于纯定时功能) |
TIM_OCMode_Active | 匹配时强制输出有效电平,直到下次更新事件或手动修改 | |
TIM_OCMode_Inactive | 匹配时强制输出无效电平,直到下次更新事件或手动修改 | |
TIM_OCMode_Toggle | 匹配时翻转输出电平 | |
TIM_OCMode_PWM1 | 计数器值 小于 比较值(CCR)时,输出有效电平 计数器值 大于等于 比较值时,输出无效电平 | |
TIM_OCMode_PWM2 | 计数器值 小于 比较值时,输出无效电平 计数器值 大于等于 比较值时,输出有效电平 | |
TIM_OCNIdleState 设置互补通道空闲状态的电平 | TIM_OCNIdleState_Set | 空闲时输出高电平 |
TIM_OCNIdleState_Reset | 空闲时输出低电平 | |
TIM_OCNPolarity 设置互补输出通道极性 | TIM_OCNPolarity_High | 有效电平为高电平 |
TIM_OCNPolarity_Low | 有效电平为低电平 | |
TIM_OCPolarity 设置主输出通道极性 | TIM_OCPolarity_High | 有效电平为高电平 |
TIM_OCPolarity_Low | 有效电平为低电平 | |
TIM_OutputNState 使能/禁用互补输出通道 | TIM_OutputNState_Enable | 使能 |
TIM_OutputNState_Disable | 禁用 | |
TIM_OutputState 使能/禁用主输出通道 | TIM_OutputState_Enable | 使能 |
TIM_OutputState_Disable | 禁用 | |
TIM_Pulse | 0x0000 ~ 0xFFFF | 比较寄存器(CCRx)的初始值 |
定时器 库函数
TIM_DeInit(TIM_TypeDef* TIMx)
:将指定的定时器恢复到上电默认状态
参数 | 类型 | 描述 |
TIMx | NVIC_InitTypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
:时基单元初始化
参数 | 类型 | 描述 |
TIMx | NVIC_InitTypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_TimeBaseInitStruct | TIM_TimeBaseInitTypeDef* | 指向时基配置结构体指针 |
TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
:默认值初始化时基单元
参数 | 类型 | 描述 |
TIM_TimeBaseInitStruct | TIM_TimeBaseInitTypeDef* | 指向时基配置结构体指针 |
TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
:使能或禁用定时器
参数 | 类型 | 描述 |
TIMx | NVIC_InitTypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
NewState | FunctionalState | ENABLE:启动,DISABLE:停止 |
TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
:使能输出中断信号
参数 | 类型 | 描述 |
TIMx | NVIC_InitTypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_IT | uint16_t | 选择要操作的中断类型
|
NewState | FunctionalState | ENABLE:使能,DISABLE:失能 |
TIM_InternalClockConfig(TIM_TypeDef* TIMx)
:使用内部时钟模式
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource)
:使用外部时钟模式1
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_InputTriggerSource | uint16_t | 其它定时器,TIM_TS_ITRx(x:0~3) |
TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter)
:使用 TIx 捕获通道时钟
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_TIxExternalCLKSource | uint16_t | TIx 具体某个引脚 |
TIM_ICPolarity | uint16_t | 输入捕获的极性
|
ICFilter | uint16_t | 输入信号的数字滤波器
|
TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter)
:ETR 外部时钟模式1 输入的时钟
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_ExtTRGPrescaler | uint16_t | ETR 预分频系数
|
TIM_ExtTRGPolarity | uint16_t | ETR 信号触发方式
|
ExtTRGFilter | uint16_t | ETR 信号的数字滤波器
|
TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter)
:ETR 外部时钟模式2 输入的时钟
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_ExtTRGPrescaler | uint16_t | ETR 预分频系数
|
TIM_ExtTRGPolarity | uint16_t | ETR 信号触发方式
|
ExtTRGFilter | uint16_t | ETR 信号的数字滤波器
|
TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter)
:单独设置预分频器、触发方式、滤波器等
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_ExtTRGPrescaler | uint16_t | ETR 预分频系数
|
TIM_ExtTRGPolarity | uint16_t | ETR 信号触发方式
|
ExtTRGFilter | uint16_t | ETR 信号的数字滤波器
|
TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode)
:配置预分频器
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
Prescaler | uint16_t | 预分频值 |
TIM_PSCReloadMode | uint16_t | 生效模式
|
TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode)
:配置计数模式
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_CounterMode | uint16_t | 新的计数模式 |
TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState)
:启用或禁用自动重载寄存器
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
NewState | FunctionalState |
|
TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter)
:给计数器写入一个值
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
Counter | uint16_t | 数值 |
TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload)
:设置指定定时器的自动重载值
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
Autoreload | uint16_t | 新的自动重载值 |
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx)
:获取当前计数器的值
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx)
:获取当前预分频器的值
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
:检查定时器标志位状态
返回值:RESET
:没有被置位,SET
:被置位
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_FLAG | uint16_t | 检查的具体标志 |
TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
:清除定时器标志位
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_FLAG | uint16_t | 清除的具体标志 |
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)
:检查定时器中断标志状态
返回值:RESET
:没有被置位,SET
:被置位
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_IT | uint16_t | 检查的具体中断类型 |
TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
:清除定时器中断标志位
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_IT | uint16_t | 清除的具体中断类型 |
TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
:x:1~4,用于初始化输出比较通道 1~4
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_OCInitStruct | TIM_OCInitTypeDef* | 指向TIM_OCInitTypeDef结构体的指针 |
TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct)
:将 TIM_OCInitTypeDef 结构体成员初始化为默认值
参数 | 类型 | 描述 |
TIM_OCInitStruct | TIM_OCInitTypeDef* | 指向TIM_OCInitTypeDef结构体的指针 |
TIM_ForcedOCxConfig(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction)
:x:1~4,暂停输出波形,强制输出高或低电平
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_ForcedAction | uint16_t | 强制输出类型 |
TIM_OCxPreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
:x:1~4,配置输出比较通道 1~4 预装载功能
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_OCPreload | uint16_t |
TIM_OCPreload_Disable:禁用 |
TIM_OCxPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
:x:1~4,设置定时器通道1~4 输出比较极性
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_OCPolarity | uint16_t | TIM_OCPolarity_High:检测高电平 |
TIM_OCxNPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity)
: 定时器互补输出通道极性
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_OCNPolarity | uint16_t | 互补通道极性 TIM_OCNPolarity_High:互补通道高电平有效 TIM_OCNPolarity_Low:互补通道低电平有效 |
TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx)
:启用或禁用定时器捕获/比较通道
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_Channel | uint16_t | 通道 TIM_Channel_1:通道 1 TIM_Channel_2:通道 2 TIM_Channel_3:通道 3 TIM_Channel_4:通道 4 |
TIM_CCx | uint16_t | ENABLE:启用 DISABLE:禁用 |
TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN)
:高级定时器互补通道使能状态
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_Channel | uint16_t | 互补通道 TIM_Channel_1:对应互补通道 CH1N TIM_Channel_2:对应互补通道 CH2N TIM_Channel_3:对应互补通道 CH3N |
TIM_CCxN | uint16_t | ENABLE:启用 DISABLE:禁用 |
TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode)
:定时器输出比较通道工作模式
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
TIM_Channel | uint16_t | 通道 TIM_Channel_1:通道 1 TIM_Channel_2:通道 2 TIM_Channel_3:通道 3 TIM_Channel_4:通道 4 |
TIM_OCMode | uint16_t | 输出比较模式 TIM_OCMode_Timing:定时模式 TIM_OCMode_Active:相等时强制输出高电平 TIM_OCMode_Inactive:相等时强制输出低电平 TIM_OCMode_Toggle:相等时翻转输出电平 TIM_OCMode_PWM1:PWM 模式 1 TIM_OCMode_PWM2:PWM 模式 2 |
TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
:高级定时器所有 PWM 主输出通道(包括互补通道)的总使能
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1、8) |
NewState | FunctionalState | ENABLE:启用 DISABLE:禁用 |
TIM_SetComparex(TIM_TypeDef* TIMx, uint16_t Comparex)
:x:1~4,设置通道 1~4 捕获寄存器 RCC 比较值
参数 | 类型 | 描述 |
TIMx | TIM_TypeDef* | 指向TIM外设的指针,TIMx(x:1~8) |
Comparex | uint16_t | 比较值(0x0000 ~ 0xFFFF) |
定时器中断 服务函数
在 startup_stm32f10x_hd.s 里面
中断触发函数 |
TIM1_BRK_IRQHandler |
TIM1_UP_IRQHandler |
TIM1_TRG_COM_IRQHandler |
TIM1_CC_IRQHandler |
TIMx_IRQHandler(x:2~7) |
TIM8_BRK_IRQHandler |
TIM8_UP_IRQHandler |
TIM8_TRG_COM_IRQHandler |
TIM8_CC_IRQHandler |