STM32F10XXX标准库函数及外设结构体
时钟
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 |
相关文章:
STM32F10XXX标准库函数及外设结构体
时钟 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_APB1Peri…...
计算机毕业设计SpringBoot+Vue.js车辆管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
剖析Manus:AI领域的创新先锋还是虚假泡沫?
在AI技术迅猛发展的当下,新的智能体不断涌现,其中Manus的出现可谓是一石激起千层浪。近期,OpenManus以极快速度复刻Manus,引发了广泛关注,但这也让我们更有必要深入剖析Manus,探究它究竟是货真价实的创新突…...
编程考古-Borland历史:《.EXE Interview》对Anders Hejlsberg关于Delphi的采访内容(中)
为了纪念Delphi在2002年2月14日发布的25周年(2020.2.12),这里有一段由.EXE杂志编辑Will Watts于1995年对Delphi首席架构师Anders Hejlsberg进行的采访记录。在这次采访中,Anders讨论了Delphi的设计与发展,以及即将到来的针对Windows 95的32位版本。 Q. 编译器引擎本身是用…...
GB28181视频平台LiveGBS在设置公网IP收流时,如何自定义修改收流端口区间
LiveGBS GB28181流媒体服务在接收视频的时候默认是使用30000-30249, webrtc流播放端口区间默认是UDP的30250-30500区间。有些网络环境不方便开放这么大的端口区间,下面介绍下如何修改配置这个区间。 从页面上修改这个区间,端口区间尽量设置大…...
【ubuntu20】--- 搭建 gerrit 最新最详细
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【ubuntu20】--- 搭建 gerrit 最新最详细…...
HCIA-DHCP
1、定义:DHCP即动态主机配置协议,通过C/S模型架构,无需主机配置IP地址,自动分配网络配置参数的网络协议。 2、作用 对比项目无 DHCP有 DHCP配置难度配置多,容易出错自动为客户端分配 IP 地址及其他网络配置参数&…...
wxWidgets GUI 跨平台 入门学习笔记
准备 参考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…...
OmniParser技术分析(一)
1.引言 通过上篇文章介绍 OmniParser:下一代纯视觉UI自动化测试先驱相信大家已经对OmniParser有初步了解,接下来详细介绍下OmniParser使用了哪些技术模型实现了对UI纯视觉的检测和理解。 2.整体方案 通过阅读OmniParser提供的运行Demo代码知道,其实整…...
什么是hive
Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...
PyTorch系列教程:Tensor.view() 方法详解
这篇简明扼要的文章是关于PyTorch中的tensor.view()方法的介绍与应用,与reshape()方法的区别,同时给出示例进行详细解释。 Tensor基础 Tensor(张量)的视图是一个新的Tensor,它与原始Tensor共享相同的底层数据,但具有不同的形状或…...
从零开始了解Manus(文末附教程)
大家好,我是樱木。 《从零开始了解Manus》,这个教程对于想了解 Manus的同学,全部都在里面了! Manus 是一款能像真人一样帮你干活的AI助手,运行在云端,不占电脑内存。 它可以自动完成复杂任务,…...
不同开发语言之for循环的用法、区别总结
一、Objective-C (1)标准的c风格 for (int i 0; i < 5; i) {NSLog("i %d", i); } (2)for in循环。 NSArray *array ["apple", "banana", "orange"]; for (NSString *fruit in …...
CentOS 7 aarch64上制作kernel rpm二进制包 —— 筑梦之路
环境说明 centos 7 aarch64 gcc 8.3.1 kernel 5.4.290 准备编译制作 # 安装必要的工具和包yum install rpm-devel rpmdevtools yum groupinstall "Development Tools"yum install ncurses-devel bc elfutils-libelf-devel openssl-devel # 安装gcc 8.3.1# 修改…...
Cursor 使用经验,一个需求开发全流程
软件开发中 Cursor 的使用经验成为关注焦点,尤其是处理大型数据集的需求。用户提到“Cursor 使用经验,一个需求开发全流程”,但“Cursor”可能指数据库游标,涉及逐行处理数据。本文将详细探讨开发一个需求的完整流程,包…...
2025-03-08 学习记录--C/C++-PTA 习题9-2 计算两个复数之积
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 二、代码(C语言)⭐️ #include <stdio.h>struct complex{int real;int imag; …...
DeepSeek-R1本地化部署(Mac)
一、下载 Ollama 本地化部署需要用到 Ollama,它能支持很多大模型。官方网站:https://ollama.com/ 点击 Download 即可,支持macOS,Linux 和 Windows;我下载的是 mac 版本,要求macOS 11 Big Sur or later,Ol…...
【时时三省】(C语言基础)赋值语句
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 赋值语句 在C程序中,最常用的语句是:赋值语句和输入输出语句。其中最基本的是赋值语句程序中的计算功能大部分是由赋值语句实现的,几乎每一个有实用价值的程序都包括赋值语句。有的程序中的大部分语句都是赋值…...
如何提取图片文字
如何分析图片风格: 分析下图片是什么风格,用即梦AI的提示语描述。我要使用描述语去即梦生成同样的图...
3.3.2 用仿真图实现点灯效果
文章目录 文章介绍Keil生成.hex代码Proteus仿真图中导入.hex代码文件开始仿真 文章介绍 点灯之前需要准备好仿真图keil代码 仿真图参考前文:3.3.2 Proteus第一个仿真图 keil安装参考前文:3.1.2 Keil4安装教程 keil新建第一个项目参考前文:3.1…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
【QT控件】显示类控件
目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏:QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...
