大学生
最后登录1970-1-1
在线时间 小时
注册时间2021-2-28
|
请教各位一个问题
代码使用RTOS(UCOSII + 定时器PWM) 控制电机.
但是发现一个奇怪的想象,在调用后发现,有时候函数执行完毕,没有任何反应,使用示波器测量后发现,未产生PWM.
代码如下:
- [list=1]
- [*]GPIO_InitTypeDef GPIO_InitStructure;
- [*] TIM_OCInitTypeDef TIM_OCInitStructure;
- [*]
- [*] cpu_sr = OS_CPU_SR_Save();
- [*]
- [*] GPIO_InitStructure.GPIO_Pin = xxxxx;
- [*] GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- [*] GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- [*] GPIO_Init(xxxxx, &GPIO_InitStructure);
- [*] GPIO_ResetBits(xxxxx, xxxxx);
- [*]
- [*] GPIO_InitStructure.GPIO_Pin = xxxxx;
- [*] GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- [*] GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- [*] GPIO_Init(xxxxx, &GPIO_InitStructure);
- [*]
- [*] TIM_Cmd(TIM4, DISABLE);
- [*] TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
- [*] TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- [*] TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- [*] TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_Low;
- [*] TIM_OCInitStructure.TIM_Pulse = 500;
- [*] TIM_OC2Init(TIM4, &TIM_OCInitStructure);
- [*]
- [*] TIM4->EGR = TIM_PSCReloadMode_Immediate;
- [*] TIM_Cmd(TIM4, ENABLE);
- [*]
- [*] OS_CPU_SR_Restore(cpu_sr);
- [/list]
复制代码
目前在不停的测试中发现几点:
1. 如果更改优化等级的话,会生效,但是其他的函数又会出现问题.
2. 目前如果不使用PWM,一切正常,函数调用也正常.
3. 定时器使用的1K频率.
想请问下各位,是不是哪里弄错了?
|
|