硬件平台: stm32f407ve
软件平台: win10 (OS Name: Microsoft Windows 10 Enterprise
OS Version: 10.0.18363 N/A Build 18363)
Keil5 5.26.2
HAL库版本: 2.14.0(目前下载的最新的)
实验介绍:
本次是使用hal库进行led闪烁实验。(根据之前建立的模板操作,这里不再建立工程模板)
//包含基本的头文件
#include //led端口的初始化,需要设置对应得IO引脚为输出模式, //HAL_GPIO_Init();主要是根据这个函数来决定要做得工作 void led_init(void) { GPIO_InitTypeDef GPIO_Init; //定义一个结构体变量。 //1.时钟使能,在stm32的结构中,(片上)外部设备的使用第一步就是要设置时钟使能,复位之后,外部设备都是没有时钟的,降低了整个芯片的功耗,使能时钟,才表示外部设备可以正常工作了。 //片上外部设备主要指芯片上除了cpu的其他功能电路 __HAL_RCC_GPIOE_CLK_ENABLE(); //GPIOE这个端口的电路被开启,整个GPIOE的16个引脚都可以正常工作了。 //2.端口设置 GPIO_Init.Mode = GPIO_MODE_OUTPUT_OD; //输出开漏模式 GPIO_Init.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15; //需要配置的引脚 GPIO_Init.Pull = GPIO_PULLUP; //上拉电阻 GPIO_Init.Speed = GPIO_SPEED_FREQ_LOW; //IO引脚的工作频率,led的变化不会很快,使用低频率就足够了。 // GPIO_Init.Alternate = ; //GPIO的mode设置位复用功能的时候,才会配置复用功能 HAL_GPIO_Init(GPIOE, &GPIO_Init); //这个函数才是使之前配置的语句生效,之前是给结构体赋值 //3.点亮或熄灭灯 } Main函数是c语言的入口函数 int main(void) { int i; HAL_Init(); //必须在第一个语句执行,这个函数可以不执行,暂时不分析 led_init(); //上面提到的初始化IO端口为输出模式 while(1) //循环翻转引脚的状态 { HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_13); for(i=0;i<1000000;i++) ; // HAL_Delay(500); } } 也可以写成以下的样子,RESET表示输出低电平,SET表示输出高电平 这是一个SysTick定时器的中断处理函数,HAL_Init(); 这个函数初始化了systick,并且开启该定时器,使能了中断,所有需要使用这个处理一下。中断这个部分先可以放一放,后面将会说这个话题。 void SysTick_Handler(void) { HAL_IncTick(); //这个函数的源码只是将一个全局变量的值加1,这个中断是1ms发生一次,也就是说,没隔1ms全局变量就会被加1.根据这个全局变量的值,之后的HAL_Delay 函数会使用到这个全局变量。 } github的工程源码: https://github.com/zhaozhi0810/stm32f407_hal_keil5
上一篇:4. stm32启动代码分析(一)
下一篇:2. Stm32f407 led闪烁示例
推荐阅读最新更新时间:2024-11-09 16:15
设计资源 培训 开发板 精华推荐
- LT8570IDD-1 1.5MHz、5V 至 12V 升压转换器的典型应用
- MIC5247 的典型应用:150mA 低压电容线性稳压器
- 使用 ROHM Semiconductor 的 BU4945 的参考设计
- OP184ESZ-REEL 缓冲网络补偿容性负载的典型应用
- EVAL-AD7716EBZ,评估板采用 AD7716,用于仪表的 22 位 ADC 数据采集系统
- 使用 Analog Devices 的 LTC1650AIN 的参考设计
- [Hi-Res]基于TAS5825M的D类数字功放
- 使用 Infineon Technologies AG 的 BGA416 的参考设计
- LT3089EFE 基准缓冲器的典型应用电路
- 应用电路-25 使用 MIC5158 过压保护电源开关