找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3046|回复: 7
打印 上一主题 下一主题
收起左侧

有人配置过STM32的tim4吗?请教一下

[复制链接]
跳转到指定楼层
楼主
ID:374198 发表于 2019-1-18 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
tim14配置好了之后
TIM14_PWM_Init(1000-1,84-1);         
TIM_SetCompare1(TIM14,1200);

通过调用改变这个就能改变频率占空比。
看到有大佬在帖子里发:
IM14使用
TIM_SetCompare1(TIM14,625); 但是这个办法对TIM4行不通。

TIM4使用
TIM_OCInitStructure.TIM_Pulse = dutyCycle;


tim4配置方法和tim14不一样,但根据他说的用TIM_OCInitStructure.TIM_Pulse = dutyCycle;配置好了调用到主函数就会报错说没有定义
就没法在主函数里修改数值更改占空比。

在这里求教一下,麻烦有了解的帮忙指点一下。非常感谢。QQ2302947935

评分

参与人数 1黑币 +8 收起 理由
菜鸡一只314159 + 8 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:443164 发表于 2019-1-18 13:08 | 只看该作者
你去搜索正点原子教程,定时器实验内容很全的
回复

使用道具 举报

板凳
ID:94031 发表于 2019-1-18 15:27 | 只看该作者
/***********************TIM4初始化PWM相关GPIO*************************/

static void GENERAL_TIM_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;                                                        //初始化结构体

  RCC_APB2PeriphClockCmd(GENERAL_TIM4_CH1_GPIO_CLK, ENABLE);//使能GPIOB端口时钟
  GPIO_InitStructure.GPIO_Pin =  GENERAL_TIM4_CH1_PIN;                        //PB6
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                    //复用推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                  //推挽速度50MH
  GPIO_Init(GENERAL_TIM4_CH1_PORT, &GPIO_InitStructure);                //初始化相关GPIO       
}


/**************************TIM2PWM配置********************************/
static void GENERAL_TIM_Mode_Config(void)
{

        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;                                        //定时器基本配置结构体
        TIM_OCInitTypeDef  TIM_OCInitStructure;                                                        //通道配置结构体       
               
        GENERAL_TIM4_APBxClock_FUN(GENERAL_TIM4_CLK,ENABLE);                        //TIM2 挂载在APB1 32M
       
        // 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断
       
        TIM_TimeBaseStructure.TIM_Period=GENERAL_TIM4_Period;                        //配置计数720次               
        // 驱动CNT计数器的时钟 = Fck_int/(psc+1)
        TIM_TimeBaseStructure.TIM_Prescaler= GENERAL_TIM4_Prescaler;        //CNT时钟不分频       
        // 时钟分频因子 ,配置死区时间时需要用到
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                        //时钟不分频       
        // 计数器计数模式,设置为向上计数
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;                //向上计数               
        // 重复计数器的值,没用到不用管
        TIM_TimeBaseStructure.TIM_RepetitionCounter=0;                                       
        // 初始化定时器
        TIM_TimeBaseInit(GENERAL_TIM4, &TIM_TimeBaseStructure);                        //初始化定时器配置

        /*--------------------输出比较结构体初始化-------------------*/       

                               
        // 配置为PWM模式1
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                                //PWM模式1
        // 输出使能
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        //使能输出
        // 输出通道电平极性配置       
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                //高电平使能
       
        // 输出比较通道 1
        TIM_OCInitStructure.TIM_Pulse = 0;                                                //初始值为0
        TIM_OC1Init(GENERAL_TIM4, &TIM_OCInitStructure);                                //初始化配置
        TIM_OC1PreloadConfig(GENERAL_TIM4, TIM_OCPreload_Enable);                //使能加载寄存器
       
        TIM_Cmd(GENERAL_TIM4, ENABLE);
}



/*************************TIM4初始化函数****************************************/

void TIM4_PWM_Init(void)
{
        GENERAL_TIM_GPIO_Config();
        GENERAL_TIM_Mode_Config();               
}


回复

使用道具 举报

地板
ID:263450 发表于 2019-1-19 00:15 | 只看该作者
没有定义,你看一下你的配置外设的头文件里是不是把tim4的宏注释掉了
回复

使用道具 举报

5#
ID:374198 发表于 2019-1-19 11:41 | 只看该作者
xuyaqi 发表于 2019-1-18 15:27
/***********************TIM4初始化PWM相关GPIO*************************/

static void GENERAL_TIM_G ...

请教一下在哪里修改占空比和频率呢?
回复

使用道具 举报

6#
ID:374198 发表于 2019-1-26 10:59 | 只看该作者
解决了,谢谢大家
回复

使用道具 举报

7#
ID:94031 发表于 2019-1-26 18:21 | 只看该作者
七九六 发表于 2019-1-19 11:41
请教一下在哪里修改占空比和频率呢?

频率是这个:static void GENERAL_TIM_Mode_Config(void);
脉宽是这个:TIM_SetCompare1(GENERAL_TIM4,36);       
回复

使用道具 举报

8#
ID:473218 发表于 2019-1-26 20:54 | 只看该作者
看看TIM4的时钟有没有配置,还有分频是多少
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表