"); //-->
#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
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
PCB封装详解手册
可进行FPGA开发的高性价比ARM开发板
借助创新技术提升气候韧性
马斯克担忧失去对特斯拉的控制权
各位版主们,进来帮帮忙阿!小弟在线等!!
美光发布 G9 NAND SSD 用于人工智能,发送全球首款 PCIe Gen6 NVMe 样品
960 颗类脑芯片,浙大「悟空」出世
高共模范围的测量放大电路
最新ARM技术和嵌入式技术发展动态 上
手机装上HBM,会怎样?
库克表示苹果必将把握AI机遇,相信依旧能够引领市场
宽带低噪声放大电路
[求助]如何开M68VZ328定时器中断?(在线等)
PCB分类、特点、工艺流程、检验与测试
PCB封装详解
据报道英伟达本月计划在中国削减 RTX 50 系列价格因销量疲软
安森美公布2025年第二季度财报
可进行FPGA开发的高性价比ARM开发板
[求助]请问在用make编译一个大工程过程中经常自动停止编译是什么原因,该如何解决。谢谢!
银河麒麟携手研华,构建基于瑞芯微国产化解决方案
精密电桥传感放大电路
最新ARM技术和嵌入式技术发展动态 下
WinCE+ARM开发及关键技术 上
美国利用微软系统漏洞对我国防军工领域实施网络窃密攻击
PCB多层版层结构资料
最新ARM技术和嵌入式技术发展动态 中
PCB多层板对准度控制
基于ARM的嵌入式Linux系统开发 下
采用程控集成运放的测量放大电路
高精度线性放大电路