打印

求大佬解释下关于程序中C语言的问题

[复制链接]
241|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你说说说说|  楼主 | 2020-4-10 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static void GENERAL_TIM_Mode_Config(void)
{
  // 开启定时器时钟,即内部时钟CK_INT=72M
        GENERAL_TIM_APBxClock_FUN(GENERAL_TIM_CLK,ENABLE);  //使能TIM3的时钟
/*--------------------时基结构体初始化-------------------------*/
        // 配置周期,这里配置为10K
        
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        // 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断
        TIM_TimeBaseStructure.TIM_Period=9;        
        // 驱动CNT计数器的时钟 = Fck_int/(psc+1)
        TIM_TimeBaseStructure.TIM_Prescaler= 71;        
        // 时钟分频因子 ,配置死区时间时需要用到
        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;               
        // 计数器计数模式,设置为向上计数
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;               
        // 重复计数器的值,没用到不用管
        TIM_TimeBaseStructure.TIM_RepetitionCounter=0;        
        // 初始化定时器
        TIM_TimeBaseInit(GENERAL_TIM, &TIM_TimeBaseStructure);

        /*--------------------输出比较结构体初始化-------------------*/        
        // 占空比配置
        uint16_t CCR1_Val = 5;
        
        TIM_OCInitTypeDef  TIM_OCInitStructure;
        // 配置为PWM模式1
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        // 输出使能
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        // 输出通道电平极性配置        
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
        
        // 输出比较通道 1
        TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
        TIM_OC1Init(GENERAL_TIM, &TIM_OCInitStructure);
        TIM_OC1PreloadConfig(GENERAL_TIM, TIM_OCPreload_Enable);
        
        // 使能计数器
        TIM_Cmd(GENERAL_TIM, ENABLE);
}
在通用定时器PWM输出函数 中,为什么TIM_OCInitTypeDef  TIM_OCInitStructure;可以放在函数的中间,还不会报错;但是我复制完之后就出现问题了;好像以前也看见过挺多这样子的写法,但是定义结构体不是得放在函数的开头吗?
求大佬解释下

使用特权

评论回复

相关帖子

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

本版积分规则

355

主题

355

帖子

1

粉丝