GD32F350 TIMER13的PWM

void timer13_config(void)
{
    timer_oc_parameter_struct timer_ocintpara;
    timer_parameter_struct timer_initpara;
    
    rcu_periph_clock_enable(RCU_TIMER13);
	rcu_periph_clock_enable(RCU_GPIOB);
	
    gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_MAX,GPIO_PIN_1);
    gpio_af_set(GPIOB, GPIO_AF_0, GPIO_PIN_1); 

    timer_deinit(TIMER13);

    /* TIMER1 configuration */

    timer_initpara.prescaler         = 9;

    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 2700;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_initpara.repetitioncounter = 0;
    timer_init(TIMER13,&timer_initpara);

    /* CH1,CH2 and CH3 configuration in PWM mode */
    timer_ocintpara.outputstate  = TIMER_CCX_ENABLE;
    timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE;
    timer_ocintpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;
    timer_ocintpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;
    timer_ocintpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;
    timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;

    timer_channel_output_config(TIMER13,TIMER_CH_0,&timer_ocintpara);

    timer_channel_output_pulse_value_config(TIMER13,TIMER_CH_0,1350);
    timer_channel_output_mode_config(TIMER13,TIMER_CH_0,TIMER_OC_MODE_PWM0);
    timer_channel_output_shadow_config(TIMER13,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);
	
	
    timer_primary_output_config(TIMER13, ENABLE);

    timer_enable(TIMER13);
    }
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 STM32F103 微控制器,你可以使用 Timer8 来生成 PWM 信号。下面是一个简单的示例代码,演示如何配置 Timer8 作为 PWM 产生器: 首先,你需要在 STM32CubeMX 或者手动配置寄存器的方式下,将 Timer8 配置为 PWM 模式。确保 Timer8 的时钟源被正确配置,并设置 PWM 输出的频率和占空比。 接下来,你需要对 Timer8 进行初始化和配置。以下是一个示例代码片段: ```c #include "stm32f1xx_hal.h" void HAL_TIM_MspInit(TIM_HandleTypeDef* htim) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(htim->Instance==TIM8) { /* 配置 GPIO 引脚为复用推挽输出 */ GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* 启用 Timer8 时钟 */ __HAL_RCC_TIM8_CLK_ENABLE(); } } void MX_TIM8_Init(void) { TIM_OC_InitTypeDef sConfigOC = {0}; htim8.Instance = TIM8; htim8.Init.Prescaler = 0; htim8.Init.CounterMode = TIM_COUNTERMODE_UP; htim8.Init.Period = 9999; htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; HAL_TIM_PWM_Init(&htim8); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 5000; // 设置占空比为 50% sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); } ``` 上述代码片段将 Timer8 配置为 PWM 模式,并将占空比设置为 50%。你可以根据需求修改占空比和其他参数。这样,Timer8 将会在 PC7 引脚上产生 PWM 输出信号。 请注意,以上代码仅为示例,并且假设你已经进行了必要的时钟配置和引脚映射。具体的配置和初始化步骤可能因你的硬件和需求而有所不同。建议你查阅 STM32F103 参考手册和相关文档以获取更详细的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值