我用PC3/PC4/PC6/PC7来做产生2对互补PWM,PC3/PC6/PC7周期、死区都正常,但是PC4在我期望的PWM上还会叠加一个33kHz的方波,我设置的周期是2kHz。我一直怀疑是时钟输出(CCO)的串扰。请各位大侠帮忙看看是怎么回事。一下是初始化代码: void InitSystem(void) { CLK->CKDIVR &= (u8)~(CLK_CKDIVR_CPUDIV); // fcpu= fmaster (CPUDIV= 0) CLK->CKDIVR &= (u8)~(CLK_CKDIVR_HSIDIV); // fhsi= fhsirc (HSIDIV= 0) CLK->ICKR |= CLK_ICKR_HSIEN; //时能内部始 while((CLK->ICKR&0x02) == 0) {}; //等待内部始终就绪 CLK->CCOR = 0x00; //禁止CCO时钟输出 } void InitTimer1(void) { CLK->PCKENR1 |= CLK_PCKENR1_TIM1; //TIM1 Clock Enable TIM1->CR1 = 0x40;//递增递减计数中央对齐,只在递增中断。 TIM1->SR1 = 0x00;//清除中断标志位 TIM1->SR2 = 0x00; TIM1->CCMR1 = 0x68; TIM1->CCMR2 = 0x68; TIM1->CCER1 = 0xFF;// iP高电平,iN低电平 TIM1->PSCRH = 0; TIM1->PSCRL = 0; //16MHz时钟 TIM1->ARRH = (u8)(((PwmPeriod - 1) >> 8)&0xff); // init pulse period - auto reload register TIM1->ARRL = (u8)((PwmPeriod - 1)&0xff); TIM1->CCR1H = 0; TIM1->CCR1L = 98; TIM1->CCR2H = 0; TIM1->CCR2L = 95; TIM1->DTR = 60; TIM1->IER |= TIM1_IER_UIE ; //不用刹车中断,硬件没有接允许更新中断 中断号11 TIM1->CR1 |= TIM1_CR1_URS | TIM1_CR1_CEN; // enable timer; TIM1->BKR = 0x80; TIM1->EGR |= 0x01; } |
é项åé ç½®
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm
STM8S003F3 NRST电压低,无法开机
{
CLK->CKDIVR &= (u8)~(CLK_CKDIVR_CPUDIV); //fcpu= fmaster (CPUDIV= 0)
CLK->CKDIVR &= (u8)~(CLK_CKDIVR_HSIDIV); //fhsi= fhsirc (HSIDIV= 0)
CLK->ICKR |= CLK_ICKR_HSIEN; //时能内部始
while((CLK->ICKR&0x02) == 0) {}; //等待内部始终就绪
CLK->CCOR = 0x00; //禁止CCO时钟输出
}
void InitTimer1(void)
{
CLK->PCKENR1 |= CLK_PCKENR1_TIM1;//TIM1 Clock Enable
TIM1->CR1 = 0x40;//递增递减计数中央对齐,只在递增中断。
TIM1->SR1 = 0x00;//清除中断标志位
TIM1->SR2 = 0x00;
TIM1->CCMR1 = 0x68;
TIM1->CCMR2 = 0x68;
TIM1->CCER1 = 0xFF;// iP高电平,iN低电平
TIM1->PSCRH = 0;
TIM1->PSCRL = 0; //16MHz时钟
TIM1->ARRH = (u8)(((PwmPeriod - 1) >>8)&0xff); // init pulseperiod - auto reload register
TIM1->ARRL = (u8)((PwmPeriod - 1)&0xff);
TIM1->CCR1H = 0;
TIM1->CCR1L = 98;
TIM1->CCR2H = 0;
TIM1->CCR2L = 95;
TIM1->DTR = 60;
TIM1->IER |= TIM1_IER_UIE ; //不用刹车中断,硬件没有接允许更新中断 中断号11
TIM1->CR1 |= TIM1_CR1_URS | TIM1_CR1_CEN; //enable timer;
TIM1->BKR = 0x80;
TIM1->EGR |= 0x01;
}