Tengo un STM32F103 y descargué este programa en él (un simple programa de parpadeo):
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#define SYSCLK_FREQ_72MHz
/* Private functions ---------------------------------------------------------*/
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
void GPIO_Configuration(void);
void delay(uint32_t a){
while(a){
--a;
}
}
/*******************************************************************************
* Function Name : main
* Description : Main Programme
* Input : None
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
int main(void)
{
GPIO_Configuration();
/* Infinite loop */
while (1)
{
delay(0x44AA200);
GPIOB->ODR ^= GPIO_Pin_0;
}
}
/*******************************************************************************
* Function Name : GPIO_Configuration
* Description : Configure GPIO Pin
* Input : None
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
void GPIO_Configuration(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);
/**
* LED1 -> PB0
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
Esperaba que delay(0x44AA200);
funcione para 1s pero, pero cuando lo ejecuto, ¡este retardo toma 6s!
¿Por qué ?
¿Está relacionado con la canalización mejorada de 3 etapas?
esta es la configuración de RCC y creo que todo está bien:
yesteeselcódigodeensamblaje: