temporizador STM32 tiene una gran cantidad de uso:
(a) el reloj del sistema (SysTick)
La configuración es sencilla, los siguientes 1ms se genera valores de interrupción, y generar retardo de 10 ms función:
vacío RCC_Configuration (void) {RCC_ClocksTypeDef RCC_ClockFreq; SystemInit (); //archivo desde system_stm32f10x.c, sólo tiene que llamar a esta función puede estar dispuesto para completar el RCC .RCC_GetClocksFreq (&RCC_ClockFreq);
//SYSTICK --1ms dividiendo el reloj del sistema de interrupción si (SysTick_Config (SystemFrequency /1000)) {while (1); //error Capture}}
void SysTick_Handler (void) //función de procesamiento de interrupción en el {while (TIM) {tim--;}}
//llamada de programa: Delay_ms (10);
por supuesto, se establece la premisa variable de tim para configurar tipo volátil.
(b) implica un tiempo de segundo recuento de temporizador (TIMX)
TIM_TimeBaseStructure.TIM_Prescaler = 2; //prescaler (frecuencia de reloj de división) 72M /(2 + 1) = 24MTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //contar hasta TIM_TimeBaseStructure.TIM_Period = 65535; //valores de carga de 18k /144 = 125hzTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0; TIM_TimeBaseInit (TIM3, &TIM_TimeBaseStructure);
hora regular calcula: TIM_TimeBaseStructure.TIM_Prescaler = 2; //divisor 2 72M //2=24MHzTIM_TimeBaseStructure.TIM_Period = 65,535 (2 + 1); //valor de recuento 65535 ((1 + TIM_Prescaler) /72M) * (1 + TIM_Period) = ((1 + 2) /72M) * (1 + 65 535) = 0.00273 segundos = 366.2Hz * /
dos puntos (de red de gambas, no probado) (1) TIMX (1-8), en la biblioteca proporcionada por defecto, el reloj es 72M; (2) TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; Número de repeticiones se repite muchas veces antes de un rebosadero a un desbordamiento de interrupción que darle el correspondiente registro TIM1 llamada RCR. Si este valor no está configurado, Cuando el valor del registro de la electricidad, pero al azar, interrumpida una vez tuvo un segundo, N segundos pueden llegar a ser interrumpida una vez, deje que su cabeza super grande!
supone que el reloj del sistema es 72Mhz, TIM1 se deriva de PCLK2 (72MHz), TIM2-7 era
son fijados por una clave de reloj PCLK1 número de pre-escalador, auto-recarga periodo valor del registro
se proporciona sustancialmente temporizador
1, TIM_TimeBaseStructure .TIM_Prescaler = 7,199; //número de ejemplo reloj prescaler:
frecuencia de reloj = 72 /(reloj prescaler 1)
2, TIM_TimeBaseStructure.TIM_Period = 9,999; //valor automático (temporización
tiempo) registrar ciclo de recarga generado por la acumulación de una 0xFFFF frecuencia actualizado o interrumpir (también dicho tiempo regular)
3, TIM_TimeBaseStructure.TIM_CounterMode = TIM1_CounterMode_Up; //temporizador
patrón de contar hasta
4, TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //valor por división de tiempo
5, TIM_TimeBaseInit (TIM2, &TIM_TimeBaseStructure); //inicializar temporizador 2
6, TIM_ITConfig (TIM2, TIM_IT_Update, ENABLE); //abrir el desbordamiento de interrupción de interrupción
7, TIM_Cmd ( TIM2, ENABLE); //temporizador abierto
o:
TIM_TimeBaseStructure.TIM_Prescaler = 35999; //división 35,999 72M /
(35999 + 1) /2 = 1 Hz 1 segundo de tiempo de interrupción de desbordamiento
TIM_TimeBaseStructure.TIM_Period = 2,000; //valor de recuento 2000
((1 + TIM_Prescaler) /72M) * (1 + TIM_Period) = ((1+ 35999) /72M) * (1 + 2,000) = 1 segundo * /
STM32 función de temporizador básica común implementado temporizador parpadea
# include " stm32f10x.h " # include " misc.h "
void RCC_Configuration (void); void NVIC_Configuration (void); GPIO_Configuration void (void); TIM3_Configuration void (void);
int main (void) {RCC_Configuration ( ); NVIC_Configuration (); GPIO_Configuration (); TIM3_Configuration ();
TIM_ClearFlag (TIM3, TIM_FLAG_Update); TIM_ARRPreloadConfig (TIM3, DISABLE);
TIM_ITConfig (TIM3, TIM_IT_Update, ENABLE); TIM_Cmd (TIM3, ENABLE);
while (1) {;}}
TIM3_Configuration void (void) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 9,999; TIM_TimeBaseStructure.TIM_Presca ler = 7199; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit (TIM3, &TIM_TimeBaseStructure);}
RCC_Configuration (void) {SystemInit ();
RCC_APB1PeriphClockCmd ( RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC, habilitar);
}
vacío NVIC_Configuration (void) {NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ACT; NVIC_Init (&NVIC_InitStructure);}
vacío GPIO_Configuration (void) {GPIO_InitTypeDef GPIO_InitStructure; } # include " stm32f10x_it .h " TIM3_IRQHan vacío dler (void) {if (TIM_GetITStatus (TIM3, TIM_IT_Update) = REINICIAR!) { TIM_ClearITPendingBit (TIM3, TIM_IT_Update); GPIO_WriteBit (GPIOC, GPIO_Pin_7, (BitAction) (1 - GPIO_ReadOutputDataBit (GPIOC, GPIO_Pin_7)) );}}
Requisitos del sistema: versión ilimitada, requiere una plataforma de PC (CPU de arquitectura x86),
Linux
: printf ( \\ 033 [color de fondo de la palabra; color de fuente m string \\ 033 [0m ); printf ( \
Agregue un usuario ftp a Linux y configure los permisos correspondientes. Los pasos de la operación
Para ver el uso de la memoria en el servidor Linux, puede usar el comando free -m. Tenga en cuenta
Linux modifica la fecha y hora del sistema
La diferencia entre tty y consola y terminal
Implementación de Ubuntu del montaje permanente de la partición
Cómo instalar el sistema Linux (CentOS) a través de la red
El servidor IIS no admite la solución
Cómo eliminar el antiguo kernel del sistema Ubuntu Linux
Siete armas únicas en el sistema operativo Linux
Shell, método de interacción automática
Cuando el comando de Linux para ver la memoria y la interpretación de los comando muestra
Linux bajo el mismo nombre LVM a resolver los problemas de montaje
Instalación y desinstalación del software de Linux Tutorial básico
¿Qué debo hacer si el archivo CHM del sistema WinXP no se puede abrir?
Microsoft reconoce la vulnerabilidad de Windows RT
Win10 vista previa versión 10162 actualización 10240 tarjeta de instalación en 71% solución
¿Cómo comprobar el código de pantalla azul de Win8?
Utilice la biblioteca de archivos de Win 7 para recopilar archivos importantes
Las impresoras láser son propensas a fallas. Las impresoras láser
Agregue una contraseña al directorio de Apache bajo el sistema operativo Linux
La vista previa de Win10 14295 no puede conectar el receptor WiFi Miracast cómo hacerlo