- #define CR1_CEN (1U<<0)
- /* *************** Enabling PA6, PA7 as OUTPUT PINs *************** */
- /* Enabling clock access AHB1EN for GPIOC */
- RCC->AHB1ENR |= (1U<<2);
- /* *************** Setup tiMER8 for PWM control *************** */
- /* Enable clock access to tim8 */
- RCC->APB2ENR |= (1U<<1);
- /* Set PC6 as AF3 for TIM3_CH1 */
- GPIOC->MODER |= (1U << 13);
- GPIOC->MODER &=~ (1U << 12);
- /* Choose AF3(0b0011) for PC6 (AFR[1], it's used for pins from 8 to 15) */
- GPIOC->AFR[0] |= (0x3 << 24);
- /* *************** TIM3 settings for PWM *************** */
- /* Set prescaler value */
- TIM8->PSC = 16000 - 1;
- /* Set auto-reload value */
- TIM8->ARR = 100 - 1;
- /* Set CCR1 as a preload value, it's used to determine the DUTY CYCLE */
- TIM8->CCR1 = 90;
- /* Set CCMR1 for output compare PWM mode 1 */
- TIM8->CCMR1 |= (1U << 6) | (1U << 5);
- /* *************** Compare MODE / interrupt status *************** */
- /* Enable use of preload register */
- TIM8->CCMR1 |= (1U<<3); // CCMR1_OC1PE_EN
- /* Enable CH1 as Output Compare */
- TIM8->CCER |= (1U<<0); // CC1EEN
- /* Enable TIM interrupt */
- //TIM8->DIER |= (1U<<0);
- /* Enable TIM interrupt in NVIC */
- //NVIC_EnableIRQ(TIM8_IRQn);
- /* Enable timer*/
- TIM8->CR1 |= CR1_CEN;
不幸的是,根据万用表,我看不到输出端电压水平的任何变化或频率水平的任何变化。
无论我将什么值设置为 DC 或 PSC 等,我也无法打开外部 LED。
我的代码有什么问题?
请注意,我最初在 PA8 尝试使用 TIM1,现在我切换到 TIM8,但没有任何改变。
我还想说,当我使用 TIM1 时,我可以通过设置 TIM1 工作的所有内容来获得足够高的电压输出,但 AFR[0] = 0b0001 << 28;这很奇怪,因为我对 AFR 可能出于某种原因从 PA1 开始的想法感到困惑。我可以用这些设置点亮 LED(但没有我想要的那么多)
由于此 pwm 将用于 H 桥,因此它在更高电压下工作很重要(至少 3V .. 作为 pwm)
谢谢!!