STC32G12K128 PWM用作定时器,会宕机
STC32G12K128#define MAIN_Fosc 33177600L
#define PSCRA 1
#define PWMA_T1 MAIN_Fosc/PSCRA/1000//1KHZ, 1ms
void PWM_Timer(void)
{
PWMA_PSCRH=(PSCRA-1)>>8;//设置预分频器
PWMA_PSCRL=(PSCRA-1);
PWMA_ARRH=0xff;//先高后低, 预装载寄存器(0xffff)
PWMA_ARRL=0xff;
PWMA_CCER1=0x00;//
PWMA_CCMR1=0x00;//通道1比较方向为输出
PWMA_CCR1H=PWMA_T1>>8;
PWMA_CCR1L=PWMA_T1;
PWMA_IER=0x02;//使能通道1比较中断(更新中断不开放)
PWMA_CR1|=0x81;//使能ARR预装载,边沿对齐向上计数,发生更新事件时计数器不停止,开始计时
}
void isr_PWMA() interrupt 26 //pwmaPWM_Timer
{
UCHAR sr;
UINT TEMP;
sr=PWMA_SR1;
if(sr&0x02){//通道1
PWMA_SR1&=~0x02;
if(!b_EnPwmTimer){return;} //这里如果PWMA_CCR1H,PWMA_CCR1L 不赋一个新值直接返回(原值也不行),会宕机
TEMP=(PWMA_CCR1H<<8)+PWMA_CCR1L+NewGap ;//NewGap 为定时器新的间隔
PWMA_CCR1H=TEMP>>8;
PWMA_CCR1L=TEMP;
}
}
本帖最后由 STCAI-32位8051 于 2024-5-28 09:51 编辑
数据手册里有范例程序可参考:
另下面这个帖子也可参考内容:
【新提醒】关于STC32高级PWM的定时功能使用 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区https://www.stcaimcu.com/forum.p ... e=1&extra=#pid24997
STCAI-32位8051 发表于 2024-5-28 09:49
数据手册里有范例程序可参考:
看清楚,我问的是为什么不赋新值会宕机?以前的有pca的芯片,利用pca做定时器,不赋新值也不会宕机 citron 发表于 2024-5-28 10:18
看清楚,我问的是为什么不赋新值会宕机?以前的有pca的芯片,利用pca做定时器,不赋新值也不会宕机 ...
会不会是没有清COMIF?
页:
[1]