博客
关于我
STM32F429第三篇之GPIO的模板工程构建
阅读量:597 次
发布时间:2019-03-11

本文共 1842 字,大约阅读时间需要 6 分钟。

文章目录

前言

本篇承接<>。实现模板工程的应用,主要参考资料:

  • 正点原子.STM32F429开发指南——HAL库版本

构建步骤

  1. 通过参考上一篇文章,新建一个HAL库模板工程。如下图所示:

在这里插入图片描述

  1. 在 Template 文件夹中,新进 hardware 文件夹。如下图所示:

    在这里插入图片描述

  2. 将 Template 文件夹名称改成LED.

    在这里插入图片描述

  3. 定位到 \LED\user 。删除掉多余的文件,剩余:

    在这里插入图片描述

  4. 将三个文件名为 Template 的文件 全部修改名称为:LED。如下图所示:

    在这里插入图片描述

  5. 双击 LED.uvprojx 文件,打开项目:

    在这里插入图片描述

  6. 点击 Manage Project Items 按钮,如下图所示:

在这里插入图片描述

8. 作如下图修改:
在这里插入图片描述

  1. HARDWARE右击,选择 Add New Item to Group ‘HARDWARE’.

    在这里插入图片描述

  2. 选择C File,名称为led,位置选择在hardware文件夹,最后点击 Add 。如下图所示:

    在这里插入图片描述
    注意:位置不是默认的user文件夹

  3. 类似的,建立led的头文件。如下图所示:

    在这里插入图片描述

  4. 添加头文件到工程,如下图所示:

    在这里插入图片描述

  5. 编写LED初始化文件:

头文件:

#ifndef _LED_H#define _LED_Hextern void LED_Init(void);#endif

c文件:

#include "led.h"#include "stm32f4xx.h"void LED_Init(void){       GPIO_InitTypeDef GPIO_Initure;    __HAL_RCC_GPIOB_CLK_ENABLE();           //开启GPIOB时钟	    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速    HAL_GPIO_Init(GPIOB,&GPIO_Initure);	    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);	//PB0置1,默认初始化后灯灭    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);	//PB1置1,默认初始化后灯灭}
  1. 编写main.c文件
#include "sys.h"#include "delay.h"#include "led.h"int main(void){       HAL_Init();                     //初始化HAL库    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz    delay_init(180);                //初始化延时函数    LED_Init();                     //初始化LED    while(1)    {           HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //LED0对应引脚PB1拉低,亮,等同于LED0(0)        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);   //LED1对应引脚PB0拉高,灭,等同于LED1(1)        delay_ms(500);			//延时500ms        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);   //LED0对应引脚PB1拉高,灭,等同于LED0(1)        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET); //LED1对应引脚PB0拉低,亮,等同于LED1(0)        delay_ms(500);                                      //延时500ms    }}
  1. 编译下载。

实验结果

两个LED灯,同时闪烁,周期为1s。如下图所示。

在这里插入图片描述

在这里插入图片描述

转载地址:http://ubztz.baihongyu.com/

你可能感兴趣的文章
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>
Nginx 如何代理转发传递真实 ip 地址?
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 学习(一):Nginx 下载和启动
查看>>
nginx 常用指令配置总结
查看>>
Nginx 常用配置清单
查看>>
nginx 常用配置记录
查看>>
nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
查看>>
Nginx 我们必须知道的那些事
查看>>
Nginx 源码完全注释(11)ngx_spinlock
查看>>
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的 SSL 模块安装
查看>>
Nginx 的优化思路,并解析网站防盗链
查看>>
Nginx 的配置文件中的 keepalive 介绍
查看>>
Nginx 相关介绍(Nginx是什么?能干嘛?)
查看>>
Nginx 知识点一网打尽:动静分离、压缩、缓存、跨域、高可用、性能优化...
查看>>
nginx 禁止以ip形式访问服务器
查看>>
NGINX 端口负载均衡
查看>>