通过了近两个星期的的学习,,,终于成功用stm32成功点亮了LED灯,,,这应该是从51单片机跨向ARM的第一步,,,是一个转折点是了解并深入学习更高科技的个人的一次伟大尝试与开端,,,越来越相信通过努力是能收获成功的,,,
#include "stm32f10x_lib.h"
#include"stdio.h"
void delay_ms(unsigned short time) //延时函数
{
unsigned short i,j;
for(i=0;i<time;i++)
for(j=0;j<10260;j++);
}
//void USART_configuration(void) /*USART通信*/
//{
// RCC_PCLK2Config(RCC_HCLK_Div1);
// USART_Initstructure.GPIO_Pin = GPIO_Pin_0;
// USART_Initstructure.GPIO_Speed = GPIO_Speed_50MHz ;
// USART_Initstructure.GPIO_Mode_Out = GPIO_Mode_Out_PP ;
// GPIO_Init(GPIOA, &GPIO_InitStructure);
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
// RCC_APB1PeriphClockCmd(RCC_APB1Periph_ALL ,DISABLE );
// RCC_ClockSecuritySystemCmd(ENABLE);
// }
void GPIO_configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void RCC_configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit(); // 将外设RCC寄存器重设为缺省值
RCC_HSEConfig(RCC_HSE_ON); // 设置外部高速晶振(HSE)
HSEStartUpStatus = RCC_WaitForHSEStartUp(); // 等待HSE起振
if(HSEStartUpStatus == SUCCESS)
{
/* Enable Prefetch Buffer 启用预取缓冲器 */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* Flash 2 wait state FLASH设置2个等待周期*/
FLASH_SetLatency(FLASH_Latency_2);
/* HCLK(AHB时钟) = SYSCLK 设置AHB时钟*/
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/*内部时钟不启动*/
RCC_HSICmd(DISABLE);
/* PLLCLK = 8MHz * 9 = 72 MHz 设置时钟为72M,设置PLL时钟源及倍频系数(<=72M)*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/*PLL(锁相环)使能*/
RCC_PLLCmd(ENABLE);
/*把APB2设置为72MH*/
RCC_PCLK2Config(RCC_HCLK_Div1);
/* Wait till PLL is ready 等待PLL工作稳定*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* Select PLL as system clock source 选择PLL做为系统时钟源*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Wait till PLL is used as system clock source 准备就绪,开始干活*/
while(RCC_GetSYSCLKSource() != 0x08);
}
}
//USART_InitTypeDef USART_Initstructure;
//void USART_configuration()
//{
//
// USART_Initstructure.USART_BaudRate = 9600;
// USART_Initstructure.USART_WordLength = USART_WordLength_8b;
// USART_InitStructure.USART_StopBits = USART_StopBits_1;
// }
int main()
{
RCC_configuration();
GPIO_configuration();
while(1)
{
delay_ms(1000);
GPIO_Write(GPIOA, 0x1111111111111111);
delay_ms(1000);
GPIO_Write(GPIOA,0x0000000000000000);
}
return(1);
}
|