stm32f103c8t6定时器用c写一个stm32f103c8t6定时器2通道4的端口重映射功能
时间: 2023-10-02 11:04:18 浏览: 108
可以使用以下代码实现:
#include "stm32f10x.h"
void TIM2_Init()
{
// 启用 TIM2 时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
// TIM2 基本设置
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_Prescaler = 72 - 1; // 分频器为 72
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 计数器向上计数
TIM_TimeBaseInitStruct.TIM_Period = 1000 - 1; // 计数器重载值为 1000 - 1
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割为 1
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
// TIM2 通道 4 设置
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; // PWM 模式 1
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; // 输出使能
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; // 高电平有效
TIM_OCInitStruct.TIM_Pulse = 500 - 1; // 初始占空比为 50%
TIM_OC4Init(TIM2, &TIM_OCInitStruct);
// 端口重映射
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM2, ENABLE);
// 启用 TIM2 主输出使能
TIM_CtrlPWMOutputs(TIM2, ENABLE);
// 启动 TIM2 计数器
TIM_Cmd(TIM2, ENABLE);
}
int main()
{
TIM2_Init();
while (1);
return 0;
}
阅读全文