STC8G2K64S4中断
使用time2作为pwm时钟源,开启pwm中断,定时器中断3会被关闭,是什么原因新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
按照这个排查一下常见问题看看
具体分析请上传程序 DebugLab 发表于 2026-1-12 13:56
新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
按照这个排查一下常见问题看看
// bio1pwm频率设置
void bioModeSetFreq(float freq)
{
float freqTemp = freq;
PWM15_InitTypeDef PWM15_InitStructure;
freq = 1000 / freq;
freq = freq / 0.1;
PWM15_InitStructure.PWM_Enable = ENABLE; //PWM使能,ENABLE, DISABLE
PWM15_InitStructure.PWM_Period = (u16)(freq); //PWM周期,0~0x7fff
PWM15_InitStructure.PWM_Clock_Sel = PWMn_CLK_TM2; //时钟源选择,PWMn_CLK_SYS, PWMn_CLK_TM2
PWM15_InitStructure.PWM_Clock_PS= 0; //系统时钟分频参数(PS+1分频),0~15
PWM15_InitStructure.PWM_Counter = ENABLE; //计数器使能,ENABLE, DISABLE
PWM15_Init(PWM5, &PWM15_InitStructure);
PWMChannelCtrl(PWM53,ENABLE,0,ENABLE,ENABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
PWM15Duty(PWM53, (u16)(freq* (4.1 - ((65 - freqTemp) * 0.046)) / 100), 0x0000);
// PWM53CR = (1 << 7) | (0 << 6) | (1 << 2)| (1 << 1)| 0;
}
这个是pwm设置函数,只要失能pwm中断就会导致定时器3关闭,当关闭pwm中断时,定时器3会恢复正常 DebugLab 发表于 2026-1-12 13:56
新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
按照这个排查一下常见问题看看
// bio1pwm禁用
void bioModeDisable(void)
{
PWM15_InitTypeDef PWM15_InitStructure;
// EAXSFR(); //访问XFR
PWMChannelCtrl(PWM53,DISABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
PWM15_InitStructure.PWM_Enable = DISABLE; //PWM使能,ENABLE, DISABLE
PWM15_InitStructure.PWM_Period = 0x0000; //PWM周期,0~0x7fff
PWM15_InitStructure.PWM_Clock_Sel = PWMn_CLK_SYS; //时钟源选择,PWMn_CLK_SYS, PWMn_CLK_TM2
PWM15_InitStructure.PWM_Clock_PS= 0; //系统时钟分频参数(PS+1分频),0~15
PWM15_InitStructure.PWM_Counter = DISABLE; //计数器使能,ENABLE, DISABLE
// PWM15_InitStructure.PWM_CInt = ENABLE;
PWM15_Init(PWM5, &PWM15_InitStructure);
BIO_MODE_OUT(0);
// EAXRAM(); // 恢复访问XRAM
}
这是关闭的 DebugLab 发表于 2026-1-12 13:56
新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
按照这个排查一下常见问题看看
void Timer3_Config(void)
{
TIM_InitTypeDef Timer_InitStruct = {0};
Timer_InitStruct.TIM_Mode = TIM_16BitAutoReload;
Timer_InitStruct.TIM_ClkSource = TIM_CLOCK_1T;
Timer_InitStruct.TIM_ClkOut = DISABLE;
Timer_InitStruct.TIM_Value = 0xA99A; // 100us
Timer_InitStruct.TIM_Run = ENABLE;
Timer_Inilize(Timer3, &Timer_InitStruct);
NVIC_Timer3_Init(ENABLE, Priority_3);
}
这是定时器3初始化 DebugLab 发表于 2026-1-12 13:56
新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
按照这个排查一下常见问题看看
不打开pwm中断时定时器3中断是正常的 两个中断频率多少,中断程序运行时间多少
检查是否存在中断程序耗时占比大于100%导致阻塞
还有如中断号大于31的中断,是否正确使用中断号扩展插件或使用13中断跳转 DebugLab 发表于 2026-1-12 16:08
两个中断频率多少,中断程序运行时间多少
检查是否存在中断程序耗时占比大于100%导致阻塞
还有如中断号大于 ...
如何使用13中断跳转呢 DebugLab 发表于 2026-1-12 16:08
两个中断频率多少,中断程序运行时间多少
检查是否存在中断程序耗时占比大于100%导致阻塞
还有如中断号大于 ...
定时器3的中断频率为1ms,pwm的中断频率为30hz到65hz 这里已经成功修改
页:
[1]
2