ARM velocidad de reloj de comportamiento extraño

0

Acabo de comenzar con ARM y he hecho una pequeña tabla de ruptura con un STM32F030 en el paquete TSSOP20.

He cargado el siguiente programa que funciona cuando la velocidad de reloj del dispositivo está configurada a 8MHz y también a 24MHz:

#include "stm32f030xx.h"

void delay(unsigned int);

void delay(volatile unsigned int num) { 
    volatile unsigned int index = 0; 
    for(index = (num); index != 0; index--) {} 
}

void initClock()
{
        RCC_CR &= ~BIT24;
        while( (RCC_CR & BIT25));   // wait for PLL ready to be cleared
        FLASH_ACR |= BIT0;
        FLASH_ACR &=~(BIT2 | BIT1);
        FLASH_ACR |= BIT4;

        RCC_CFGR &= ~(BIT21 | BIT20 | BIT19 | BIT18);
        RCC_CFGR |= (BIT18);        // set x3 multiplier (24mhz)

        RCC_CR |= BIT24;            // and turn the PLL back on again
        RCC_CFGR |= BIT1;           // set PLL as system clock source 
}

void configPins() {
    RCC_AHBENR |= BIT17; // Power up PORTA
    GPIOA_MODER = BIT10; // make pin 5 (2x5=10) an output
}   

int main() {
    initClock();
    configPins(); 
    while(1) {          
        GPIOA_ODR |= BIT5; // pin 5 has an LED to ground via a resistor
        delay(24000*12);
        GPIOA_ODR &= ~BIT5;
        delay(240000*12);
    } 
    return 0;
}

Ahora, esto simplemente pulsa un LED conectado a PA5.

Cuando aumenté el PLL de x3 a x5, cambiando:

RCC_CFGR | = (BIT18);

a

RCC_CFGR | = (BIT18 | BIT19);

en lugar de pulsar más rápido, el LED permaneció encendido, aunque es probable que se encienda y apague muy rápido en lugar de permanecer encendido. Sin embargo, debería parpadear como antes, pero solo un poco más rápido (1,6 veces la velocidad anterior, según mis cálculos).

¿Hay algún extraño 'gotcha' en el que no haya pensado? Esta es la primera vez que utilizo chips ARM, así que estoy luchando para resolverlo. Gracias por cualquier ayuda.

    
pregunta Isambard Mews

1 respuesta

2

Confirmo que fue una mala conexión con VCCA. El dispositivo funcionó sin VCCA, pero no a velocidades de reloj más altas.

    
respondido por el Isambard Mews

Lea otras preguntas en las etiquetas