cpuinit.c
63 lines
| 1.5 KiB
| text/x-c
|
CLexer
r47 | #include "stm32f4xx.h" | |||
#include <stdint.h> | ||||
#include <stdlib.h> | ||||
#include <stdio.h> | ||||
#include <bsp.h> | ||||
#include <stm32f4xx_rcc.h> | ||||
#include <core.h> | ||||
extern int main(); | ||||
void cpu_init() | ||||
{ | ||||
extern uint32_t currentCpuFreq; | ||||
r48 | #ifndef CPUFREQ | |||
#define CPUFREQ (16*1000*1000) | ||||
#endif | ||||
currentCpuFreq = CPUFREQ; | ||||
r47 | 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=main(); | ||||
printf("\n\rprogram exited with code "); | ||||
printf("%u",res); | ||||
printf("\n\r"); | ||||
while(1) | ||||
{ | ||||
delay_100us(10000); | ||||
r63 | gpioset(LED2); | |||
r47 | delay_100us(10000); | |||
r63 | gpioclr(LED2); | |||
r47 | } | |||
} | ||||