#include <stm32f2xx_gpio.h>
#include <stm32f2xx_rcc.h>
#include <stm32f2xx_flash.h>
#include <stm32f2xx_exti.h>
#include <stm32f2xx.h>
#include <stm32f2xx_syscfg.h>
#include <misc.h>
void SetupClock()
{
RCC->CR |= 1 << 16;
while ((RCC->CR & 1 << 17) == RESET) {}
//RCC->PLLCFGR |= 1 << 17;
RCC->PLLCFGR = 0x5401E06;
RCC->CFGR &= ~(1 << 4 | 1 << 5 | 1 << 6 | 1 << 7 | 1 << 11 | 1 << 14 | 1 << 13);
RCC->CFGR |= 1 << 10 | 1 << 12;
RCC->CFGR |= 1 << 15;
FLASH->ACR &= ~(1 << 2);
FLASH->ACR |= 1 << 0 | 1 << 1;
RCC->CR |= 1 << 24;
while ((RCC->CR & 1 << 25) == RESET) {}
RCC->CFGR &= ~(1 << 0);
RCC->CFGR |= 1 << 1;
while (((RCC->CFGR & 1 << 2) != RESET) && ((RCC->CFGR & 1 << 3) != SET)) { }
}
int main()
{
SetupClock();
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
for (;;)
{
GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_SET);
asm("nop");
< ... >
asm("nop");
GPIO_WriteBit(GPIOB, GPIO_Pin_6, Bit_RESET);
asm("nop");
< ... >
asm("nop");
}
}
El código se escribe de acuerdo con el manual pero la frecuencia está desactivada.