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…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...