本帖最后由 冷库的云 于 2017-8-10 10:17 编辑
TIM_BDTRInitTypeDef TIM_BDTRInitStructure; TIM_BDTRStructInit(&TIM_BDTRInitStructure);//缺省值(一般为0)必须要有,为了保证寄存器的 值不是上电随机数 TIM_BDTRInitStructure.TIM_DeadTime = 0x0A; //死区时间设置 TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure); 如果没有TIM_BDTRStructInit(&TIM_BDTRInitStructure);代码运行就不会出现你想要的结果。那有人肯定会问“为什么类似初始化代码,我没有恢复缺省值,代码运行也没问题呀!”。下面我来详细分析一下这个问题: 如果这段初始化代码用寄存器方式写就一句话,非常简洁:TIM1->BDTR|=0x0A; //死区时间设置 BDTR寄存器是16位的,有些人自己手动对寄存器的每个位都设定了自己所需要的值,那么这种情况下,是可以不恢复缺省值的,因为寄存器中的值都确定了。如果有些人只用到了寄存器的某几个位,那么其他位没用到,防止没用到的位上电默认的值是如果不是0(一般情况下为0),就会对整个配置造成影响。所以在配置前,最好先恢复缺省值!!!
|