STM32F030F4P6 - La aplicación no se inicia

0

He estado desarrollando un código para controlar una pantalla LCD utilizando STM32F030F4P6 mcu. Hasta ahora todo estaba funcionando bien.

Sin embargo, acabo de agregar un código nuevo con temporizador, y ahora, cuando cargué el código actualizado, el sistema dejó de funcionar. Los únicos cambios que hice en el sistema fueron en código.

Parece que mi aplicación no se está ejecutando como una prueba para encender un led justo después de que la entrada a main tampoco esté funcionando. El mcu parece estar funcionando ya que puedo cargar código en él.

#include "stm32f0xx_rcc.h"
#include "utilfunctions.h"
#include "spi.h"
#include "sdcard.h"
#include "nokiac100.h"
#include "pwmdac.h"

void setupPeriphClocks(void);
void setupPins(void);
uint8_t checkClocks(void);

int main(void)
{
  setupPeriphClocks();
  setupPins();

  TEST_LED_ON;

Esto debería encender el led pero no pasa nada.

¿Alguna idea de lo que podría estar mal aquí? Sospecho que podría ser algo relacionado con una falla dura, pero no tengo idea de cómo revisarlo.

¡Cualquier ayuda para calcular esto sería genial!

ACTUALIZAR

Encontré al culpable como el ISR TIM1 que escribí en mi código. Comentando el ISR hace que mi aplicación se compile y ejecute bien. Sin embargo, la inclusión del ISR se compila bien, pero la aplicación no se ejecuta.

El ISR es

void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
{
  if(TIM_GetITStatus(TIM1, TIM_IT_CC3)==SET)
  {
    if(PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER<=PWMDAC_AUDIO_DATA_SIZE)
        {
            PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER++;
            if((PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER%512)==0)
            {
                //get next audio block
                PWMDAC_CURRENT_AUDIO_BLOCK_NUMBER++;
                //make sure sd card not being accessed by video system
                //before trying to read from it
                if(SDCARD_READ_ONGOING==0)
                {
                    SDCARD_Read_Block(PWMDAC_CURRENT_AUDIO_BLOCK_NUMBER*512, (uint8_t *)PWMDAC_AUDIO_BLOCK);
                }
                else
                {
                    PWMDAC_CURRENT_AUDIO_BLOCK_NUMBER--;
                    PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER--;
                }
            }
            TIMER_Timer1_SetDuty(PWMDAC_AUDIO_BLOCK[PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER%512]);
        }
        else
        {
            //end of audio samples. loop
            printf("looping audio\n");
            PWMDAC_CURRENT_AUDIO_BLOCK_NUMBER=PWMDAC_AUDIO_DATA_SD_STARTING_SECTOR;
            PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER=1;
            if(SDCARD_READ_ONGOING==0)
            {
                SDCARD_Read_Block(PWMDAC_CURRENT_AUDIO_BLOCK_NUMBER*512, (uint8_t *)PWMDAC_AUDIO_BLOCK);
                TIMER_Timer1_SetDuty(PWMDAC_AUDIO_BLOCK[PWMDAC_CURRENT_AUDIO_SAMPLE_NUMBER%512]);
            }
        }
    TIM_ClearITPendingBit(TIM1, TIM_IT_CC3);
  }
}
    
pregunta Ankit

0 respuestas

Lea otras preguntas en las etiquetas