一、今天搞了一天灯,一直实现不了 不同状态下的红绿蓝,以及黄色呼吸灯,总结如下:
1.蓝色灯的引脚在配置的时候与其它地方配置引脚冲突了,这种情况会导致灯亮的很微弱,在简单测试的情况下,没有打开全部线程没有发现引脚冲突,所以没有往这个方面考虑。
2.不熟悉定时器的配置,引脚前面配置正确了,但是pwm一直不起作用,查了一下底层配置的意思
TIM_OC2Init(TIM2, &TIM_OCInitStructure):
这一行代码用于初始化TIM2的通道2,也就是定时器的比较输出通道2。TIM_OCInitStructure 结构体中包含了比较输出通道的配置信息,包括通道模式、输出极性、占空比等。
经查数据手册,我应该用通道1 ,但是这里是通道2,改成正确的通道后,可以正确实现呼吸灯功能。
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); /* 使能预装载寄存器1 */
TIM_ARRPreloadConfig(TIM2, ENABLE);
TIM_CtrlPWMOutputs(TIM2, ENABLE);
TIM_Cmd(TIM2, ENABLE);
3.一直要确认哪个引脚对应什么灯
二、关于程序烧录后主板不跑的问题 以及偶尔发生hardfault,仿真情况下不会hardfault
1.考虑栈是否溢出
2.注意更改keil的配置
.
这个实际没有1M,改成0x00100000 才是1M ,重新烧录引导程序后,程序正常运行,有遇到其它情况的兄弟们,欢迎留言!!