
以下代碼我是使用設定register方式來完成,希望可以用STM32F334來實現數字電源控制,我會慢慢分享STM32F334不同PWM模式,ADC取樣,閉迴路控制的代碼!! 敬請期待! void HRTIM_CLK_Config(void) { /* Initialize the HRTIM clock and DLL */ RCC_CFGR3.bits.HRTIM1SW = 1; //PLL vco output (running up to 144 MHz) RCC_APB2ENR.bits.HRTIM1EN = 1; //Enable HRTIM clock HRTIM_DLLCR.bits.CALRTE = 3; HRTIM_DLLCR.bits.CALEN = 1; while(!HRTIM_ISR.bits.DLLRDY); //Wait calibration completion } void HRTIM_SinglePWM_Config(void) { HRTIM_TIMACR.bits.CKPSCx = 0; // 144MHz * 32 HRTIM_TIMACR.bits.CONT = 1; HRTIM_PERAR.all = 46080; // Switch frequency => 144MHz * 32 / 100KHz = 46080 HRTIM_CMP1AR.all = 46080/2; // Duty = 50% HRTIM_SETA1R.bits.PER = 1; HRTIM_RSTA1R.bits.CMP1 = 1; HRTIM_MCR.bits.TACEN = 1; HRTIM_OENR.bits.TA1OEN = 1; } void HRTIM_Outputs_Config(void) { /* Enable GPIOA clock for timer A outputs */ RCC_AHBENR.bits.IOPAEN = 1; /* Configure HRTIM output: TA1 (PA8) */ GPIOA_MODER.bits.MODER8 = GPIO_Mode_AF; GPIOA_OTYPER.bits.OT8 = GPIO_OType_PP; GPIOA_OSPEEDR.bits.OSPEEDR8 = GPIO_Speed_50MHz; GPIOA_PUPDR.bits.PUPDR8 = GPIO_PuPd_NOPULL; GPIOA_AFRH.bits.AFR8 = GPIO_AF_13; } int main(void) { SystemInit(); HRTIM_Outputs_Config(); HRTIM_CLK_Config(); HRTIM_SinglePWM_Config(); while(1) { } } |