#include "stm32f10x_lib.h"//把库包含进去
void Delay(vu32 z) //1ms延时函数
{
vu32 x,y;
for(x=z;x>0;x--)
for(y=1595;y>0;y--);
}
//常用时钟设置:
void RCC_Configuration(void)
{
RCC_DeInit(); //将外设 RCC寄存器重设为缺省值(即默认值)
RCC_HSEConfig(RCC_HSE_ON);//打开外部晶振
if(RCC_WaitForHSEStartUp() == SUCCESS) //判断起振是否成功
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB时钟(HCLK)(这时设置为=系统时钟)
RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速AHB时钟(HCLK2)(这时设置为=HCLK)
RCC_PCLK1Config(RCC_HCLK_Div2); //设置低速AHV时钟(HCLK1)(这时设置为=HCLK/2)
FLASH_SetLatency(FLASH_Latency_2);//设置 FLASH存储器延时时钟周期数。(设置为延时2个时钟周期)
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能预取指缓存
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);//PLL的时钟来源及倍频的倍数
RCC_PLLCmd(ENABLE);//使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //检测PLL是否就绪
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //设置PLL为系统时钟
while(RCC_GetSYSCLKSource() != 0x08); //检测系统的时钟源是否是PLL
}
/*这不用来打开要用到的外设的时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);//使能USART GPIOA时钟
}
常用中断初始化
void NVIC_init()//中断初始化
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择相应的中断分组
NVIC_InitStructure.NVIC_IRQChannel =EXTI3_IRQChannel;//选择相应的中断通道(这就是要开的中断也就决定了你中断函那)
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//抢占式中断的优先级设置
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//响应式中断的中断优先级设置
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中断
NVIC_Init(&NVIC_InitStructure);
}
端口的位初始化:
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //GPIO初始化结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //选择引脚0,1 (选择相应的管脚)
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出频率最大50M(设置输出的频率)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //带上拉输出 (设置为何种输出或何种输入)
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA0,1引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //选择引脚3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输入频率最大50M
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA3引脚
}
整个端口的初始化:
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //GPIO初始化结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; //选择A口的所以管脚 (选择相应的管脚)
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出频率最大50M(设置输出的频率)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //带上拉输出 (设置为何种输出或何种输入)
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA口
}
端口的位操作:
GPIO_SetBits(GPIOA, GPIO_Pin_1);//PA1=1 给PA1口写1
GPIO_ResetBits(GPIOA, GPIO_Pin_1);//PA1=0给PA1口写0
a=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)//读PA1口的值赋给a
端口操作:
GPIO_Write(GPIOA, 0x0001);//给PA口写值;
a = GPIO_ReadInputData(GPIOA); //读PA口的值赋给a
文章评论(0条评论)
登录后参与讨论