Usando STM32F10x RTC para activar alguna función

0

Soy un nuevo miembro de STM32F1x y estoy intentando para hacer un proyecto que realmente necesite usar la función RTC / TIM.

Lo que estoy tratando de hacer es mostrar un temporizador de cuenta atrás de 20 segundos en la pantalla LCD. Algo que se parece a:

  

TEMPORIZADOR: 12.34 s

Entonces, lo que quiero escribir en el programa es:

var s =0
if "counted 1s " 
{    
  drawchar (3, 1, s)
  s++ 
}
if "counted 10s" 
{    
  drawchar(3, 0, x)
  x++ 
}

Entonces el problema es qué escribir para obtener:

if (counted 1s); 

Muchas gracias y lo siento, realmente no tengo muchos conocimientos al respecto.

Déjame explicarte más, basándome en mi pequeño conocimiento. Lo que sé es que cuando presiono un botón, puedo hacer algo / interrumpir.

while(1){

    if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1){

        LCD_DrawString(0, 0, name, 8);

    }
}

Eso es básicamente lo que puedo hacer.

Entonces, en lugar de presionar un botón para dibujar algo, me gustaría hacerlo cuando el cronómetro / RTC suban.

    
pregunta Tse Kelvin

1 respuesta

1

Debes usar uno de los temporizadores de hardware para esto, no un RTC. El RTC es útil para realizar un seguimiento de la hora real del día y el día del calendario (hora absoluta ). Pero solo estás tratando de contar un período de tiempo relativo de 20 segundos.

Configure y habilite el temporizador de hardware para que provea una interrupción cada 10 milisegundos. (Lea la hoja de datos o encuentre ejemplos de cómo hacer esto). En el ISR del temporizador, incremente un contador para que el valor del contador represente el número de períodos de 10 ms que han ocurrido desde que se restableció el contador. Dibuje los cuatro dígitos del valor del contador en la pantalla y dibuje un punto decimal entre los dígitos medios. Hay muchas maneras diferentes de hacer esto. Por ejemplo, podría usar sprintf para convertir el valor del contador en una cadena y luego llamar a LCD_DrawString . O puede dividir repetidamente el valor del contador por 10 para extraer un solo dígito y luego llamar a drawchar para cada dígito.

    
respondido por el kkrambo

Lea otras preguntas en las etiquetas