打印
[N32G43x]

国民技术N32G435RB,TIM9 pwm输出

[复制链接]
664|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tfqi|  楼主 | 2024-2-2 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天用到N32G435RB的PB15引脚作为pwm脉冲输出,找了一圈资料,仅记录

void Tim9PwnInit(u32 arr,u32 psc)
{
        GPIO_InitType GPIO_InitStructure;
        TIM_TimeBaseInitType TIM_TimeBaseStructure;
        OCInitType TIM_OCInitStructure;

        /* TIM9 clock enable */
    RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM9, ENABLE);

    /* GPIOA and GPIOB clock enable */
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB | RCC_APB2_PERIPH_AFIO,ENABLE);

        GPIO_InitStruct(&GPIO_InitStructure);
        // 引脚配置
    GPIO_InitStructure.Pin        = SEND_IR_PIN;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Current = GPIO_DC_4mA;
        GPIO_InitStructure.GPIO_Pull = GPIO_Pull_Up;
    GPIO_InitStructure.GPIO_Alternate = GPIO_AF1_TIM9;
    GPIO_InitPeripheral(SEND_IR_PORT, &GPIO_InitStructure);

    // 时基配置
    TIM_TimeBaseStructure.Period    = arr;
    TIM_TimeBaseStructure.Prescaler = psc;
    TIM_TimeBaseStructure.ClkDiv    = 0;
    TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;

        TIM_InitTimeBase(TIM9, &TIM_TimeBaseStructure);

    //pwm通道配置
    TIM_OCInitStructure.OcMode      = TIM_OCMODE_PWM1;
    TIM_OCInitStructure.OcPolarity  = TIM_OC_POLARITY_HIGH;
    TIM_OCInitStructure.OutputState = TIM_OUTPUT_STATE_ENABLE;
    TIM_OCInitStructure.Pulse       = 0;

    TIM_InitOc4(TIM9, &TIM_OCInitStructure);
    TIM_ConfigOc4Preload(TIM9, TIM_OC_PRE_LOAD_ENABLE);

    TIM_ConfigArPreload(TIM9, ENABLE);

    /* TIM9 enable counter */
    TIM_Enable(TIM9, ENABLE);

        TIM_SetCmp4(TIM9,0);// 0%占空比
}

初始化:

Tim9PwnInit(210-1, 0);
由于板子没有贴外部晶振,所以使用了内部高速时钟

RCC_DeInit();

RCC_EnableHsi(ENABLE);
RCC_ConfigSysclk(RCC_SYSCLK_SRC_HSI);
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40119619/article/details/135491064

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

3317

帖子

4

粉丝