#include "main.h"
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
/*----------------------------------------------------------------------------
* SystemCoreClockConfigure: configure SystemCoreClock using HSI
*----------------------------------------------------------------------------*/
void SystemCoreClockConfigure(void)
{
RCC->CR |= ((uint32_t)RCC_CR_HSION); // Enable HSI
RCC->CR &= ~((uint32_t)RCC_CR_HSEON); // Disable HSE
while ((RCC->CR & RCC_CR_HSIRDY) == 0); // Wait for HSI Ready
RCC->CFGR = RCC_CFGR_SW_HSI; // HSI is system clock
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // Wait for HSI used as system clock
FLASH->ACR = FLASH_ACR_PRFTBE; // Enable Prefetch Buffer
FLASH->ACR |= FLASH_ACR_LATENCY; // Flash 1 wait state
RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // HCLK = SYSCLK
RCC->CFGR |= RCC_CFGR_PPRE_DIV1; // PCLK = HCLK
RCC->CR &= ~RCC_CR_PLLON; // Disable PLL
// PLL configuration: = HSI/2 * 12 = 48 MHz
RCC->CFGR &= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMUL);
RCC->CFGR |= (RCC_CFGR_PLLSRC_HSI_DIV2 | RCC_CFGR_PLLMUL12);
RCC->CR |= RCC_CR_PLLON; // Enable PLL
while((RCC->CR & RCC_CR_PLLRDY) == 0) __NOP(); // Wait till PLL is ready
RCC->CFGR &= ~RCC_CFGR_SW; // Select PLL as system clock source
RCC->CFGR |= RCC_CFGR_SW_PLL;
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // Wait till PLL is system clock src
}
void delay_us(u16 us)
{
SysTick->LOAD = us*8; //设置时间
SysTick->VAL = 0x00; //清空计数器
SysTick->CTRL = 0x01; //开始倒数
while((SysTick->CTRL & 0x10000) == 0);
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
void delay_ms(u16 ms)
{
SysTick->LOAD = 1000*8; //设置时间为1ms
SysTick->VAL = 0x00; //清空计数器
SysTick->CTRL = 0x01; //开始倒数
while(ms)
{
while((SysTick->CTRL & 0x10000) == 0);
ms--;
}
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
void GPIO_test(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC , ENABLE);
//Latch Pin
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void)
{
SystemCoreClockConfigure();
// SystemCoreClockUpdate();
USART_Config(115200);
GPIO_test();
while (1)
{
GPIO_SetBits(GPIOC,GPIO_Pin_6);
delay_ms(2000);
GPIO_ResetBits(GPIOC,GPIO_Pin_6);
delay_ms(2000);
}
}
STM32F07xx单片机Systick配置
猜你喜欢
转载自blog.csdn.net/qq_37449342/article/details/103204904
今日推荐
周排行