|
|
#include "stm32f4xx.h"
|
|
|
#include <stdlib.h>
|
|
|
#include <stdio.h>
|
|
|
#include <bsp.h>
|
|
|
#include <stm32f4xx_rcc.h>
|
|
|
#include <core.h>
|
|
|
extern int libuc_main();
|
|
|
|
|
|
|
|
|
|
|
|
void main()
|
|
|
{
|
|
|
extern uint32_t currentCpuFreq;
|
|
|
#ifndef CPUFREQ
|
|
|
#define CPUFREQ (16*1000*1000)
|
|
|
#endif
|
|
|
currentCpuFreq = CPUFREQ;
|
|
|
enable_FPU();
|
|
|
RCC->CR |= (uint32_t)0x00000001;
|
|
|
FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;
|
|
|
reset_AHB1();
|
|
|
reset_AHB2();
|
|
|
reset_APB1();
|
|
|
reset_APB2();
|
|
|
RCC->CR |= (uint32_t)0x00000001;
|
|
|
FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;
|
|
|
RCC->CFGR = 0x00000000;
|
|
|
RCC->CIR = 0x00000000;
|
|
|
SCB->VTOR = FLASH_BASE;
|
|
|
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
|
|
|
PWR->CR |= PWR_CR_PMODE;
|
|
|
currentCpuFreq=setCpuFreq(currentCpuFreq);
|
|
|
currentCpuFreq=getCpuFreq();
|
|
|
configureSysTick();
|
|
|
bsp_init();
|
|
|
printf("SysTick Configured to reach 100us period\n\r");
|
|
|
RCC_ClocksTypeDef RCC_ClocksStatus;
|
|
|
RCC_GetClocksFreq(&RCC_ClocksStatus);
|
|
|
printf("PLL Configured got:\n\r SYS=%uHz\n\r CPU=%uHz\n\r APB1=%uHz\n\r APB2=%uHz\n\r",
|
|
|
(unsigned int)RCC_ClocksStatus.SYSCLK_Frequency,
|
|
|
(unsigned int)RCC_ClocksStatus.HCLK_Frequency,
|
|
|
(unsigned int)RCC_ClocksStatus.PCLK1_Frequency,
|
|
|
(unsigned int)RCC_ClocksStatus.PCLK2_Frequency);
|
|
|
printf("Enter Main\n\r");
|
|
|
int res=libuc_main();
|
|
|
printf("\n\rprogram exited with code ");
|
|
|
printf("%u",res);
|
|
|
printf("\n\r");
|
|
|
while(1)
|
|
|
{
|
|
|
delay_100us(10000);
|
|
|
gpioset(LED2);
|
|
|
delay_100us(10000);
|
|
|
gpioclr(LED2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|