实验说明:将两个LED灯点亮,隔一段时间后,将它们熄灭。
硬件电路:
如图 GPIOA.2引脚连接LED灯,在连接一个1kΩ的限流电阻,最后接地。
GPIOA.3引脚连接LED灯,在连接一个1kΩ的限流电阻,最后接地。(很简单)
主要来看软件设计(程序设计):
需要注意的几点:
置RCC寄存器组,使PLL输出72MHz时钟频率。
配置GPIOA.2和GPIOA.3为推挽输出,最大翻转频率为50MHz。
通过在GPIOA.2和GPIOA.3上输出高电平点亮LED,反之输出低电平则熄灭LED。
程序:
主函数main.c
#include"stm32f10x_lib.h" //头文件
#define Delay(n) //自定义变量
void RCC_Configuration (void);
void GPIO_Configuration (void);
int main (void)
{
vu32 n=2000000; //定义延时函数
RCC_Configuration(); //设置系统时钟
GPIO_Configuration(); //设置GPIO端口
GPIO_SetBits(GPIOA,GPIO_Pin_2); //设置GPIOA.2为高电平
GPIO_SetBits(GPIOA,GPIO_Pin_3); //设置GPIOA.3为高电平
Delay(n); //延时
GPIO_ResetBits(GPIOA,GPIO_Pin_2); //设置GPIOA.2为低电平
GPIO_ResetBits(GPIOA,GPIO_Pin_3); //设置GPIOA.3为低电平
while(1);
{
}
}
设置系统各部分时钟 RCC_Configuration
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus; //定义枚举类型变量 HSEStartUpStatus
RCC_DeInit(); //复位系统时钟设置
RCC_HSEConfig(RCC_HSE_ON); //开启HSE
HSEStatrtUpStatus=RCC_WaitForHSEStartUp(); //等待HSE起振并稳定
if(HSEStatrtUpStatus==SUCCESS) //判断HSE是否起振成功,是则进入if()内部
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //选择HCLK(AHB)时钟源为SYSCLK分频
RCC_PCLK2Config(RCC_HCLK_Div1); //选择PCLK2时钟源为HCLK(AHB)1分频
RCC_PCLK1Config(RCC_HCLK_Div2); //选择PCLK1时钟源为HCLK(AHB)2分频
FLASH_SetLatency(FLASH_Latency_2); //设置Flash延时周期数为2
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能Flash预取缓存
//选择PLL时钟源为 HSE 1 分频,倍频数为9,则PLL=8MHz *9=72MHz
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
RCC_PLLCmd(ENABLE); //使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET); //等待PLL输出稳定
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择SYSCLK时钟源为PLL
while(RCC_GetSYSCLKSource()!=0x08); //等待PLL成为SYSCLK时钟源
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //打开APB2总线上的GPIOA时钟
}
设置各GPIO端口功能 GPIO_Configuration
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//设置GPIOA.2和GPIOA.3为推挽输出,最大翻转频率为50MHz
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
上一篇:STM32库函数详解----(外部中断/事件控制器 EXTI)
下一篇:STM32-自学笔记(7.用GPIO点亮LED,程序用到的库函数介绍)
推荐阅读最新更新时间:2024-11-09 19:28
设计资源 培训 开发板 精华推荐
- ISO8200B高端驱动器-8通道评估板
- LT8641EUDC 5V、3.5A 降压转换器的典型应用电路
- STEVAL-IFP007V1,基于SCLT3-8的16位PLC数字输入卡演示板
- C29XPCIE: C29x PCI Express®适配器平台
- LC709204FXE-N01-GEVB:预装 EnerCera 配置文件的 LC709204F 评估板
- 【智能车】平衡小车
- 具多国语音播报电梯内呼板
- 使用 R1205N823B PWM 升压 DC-DC 转换器用于白光 LED/PMOLED 的典型应用
- 使用 ams AG 的 AS1382 的参考设计
- MAXREFDES1199:两层,5V / 2.5A,同步降压DC-DC转换器,采用MAX17244