金牌会员
 
- 积分
- 2108
- 金钱
- 2108
- 注册时间
- 2018-3-22
- 在线时间
- 182 小时
|
1金钱
请教各位一个问题
代码使用RTOS(UCOSII + 定时器PWM) 控制电机.
但是发现一个奇怪的想象,在调用后发现,有时候函数执行完毕,没有任何反应,使用示波器测量后发现,未产生PWM.
代码如下:
- 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);
复制代码
目前在不停的测试中发现几点:
1. 如果更改优化等级的话,会生效,但是其他的函数又会出现问题.
2. 目前如果不使用PWM,一切正常,函数调用也正常.
3. 定时器使用的1K频率.
想请问下各位,是不是哪里弄错了?
|
|