【10天基于STM32F401RET6智能锁项目实战第2天】(分别用库函数和寄存器点灯)
分别用库函数和寄存器点灯
- 一、用寄存器点灯
- 二、用库函数点灯
一、用寄存器点灯
硬件分析:首先我们要先去看原理图找到相应的GPIO口
然后再去看用到的寄存器
首先我们先看一下GPIO口是挂载在AHB1上面的,要先使能GPIOB的时钟
下面是RCC AHB1的寄存器
然后看一下配置GPIO口的寄存器
下面我们就借助上面原理图和寄存器来写我们点亮LED的代码,工程的建立如果不会可以看一下前面的博文
先建一个led.h和led.c文件别放进去user文件夹的inc和src
led.h中的代码
#ifndef _LED_H
#define _LED_H#include "stm32f4xx.h"
void Led_Config(void);#endif
led.c中的代码
主要是配置寄存器
#include "led.h"/*
函数功能:LED初始化
形参:void
返回值:void
说明:1、打开GPIOB时钟2、PB8 ----- 通用推挽模式 PB9 ----- 通用推挽模式*/void Led_Config(void)
{RCC->AHB1ENR |= 1 << 1; //打开GPIOB的时钟GPIOB->MODER &=~ (3 << 16);GPIOB->MODER |= (1 << 16);GPIOB->OTYPER &=~ (1 << 8);GPIOB->OSPEEDR |= 2 << 16;GPIOB->PUPDR &=~ (3 << 16);GPIOB->ODR |= 1 << 8;//默认灭GPIOB->MODER &=~ (3 << 18);GPIOB->MODER |= (1 << 18);GPIOB->OTYPER &=~ (1 << 9);GPIOB->OSPEEDR |= 2 << 18;GPIOB->PUPDR &=~ (3 << 18);GPIOB->ODR |= 1 << 9;//默认灭
}
main.c中的代码
#include "main.h"
int main()
{Led_Config();//LED初始化while(1){ /**寄存器点亮LED(PB8、PB9)*/GPIOB->ODR &=~ (1 << 8);//LED1亮GPIOB->ODR &=~ (1 << 9);//LED2亮 GPIOB->ODR &=(1 << 8);//LED1灭GPIOB->ODR &=(1 << 9);//LED2灭}
}
main.h中的代码
#ifndef _MAIN_H
#define _MAIN_H#include "stm32f4xx.h"
#include "led.h"#endif
两盏蓝色的就是点亮的灯
二、用库函数点灯
工程跟上面是一样的只是代码变了,换成了调用库函数
led.h中的代码
#ifndef _LED_H
#define _LED_H#include "stm32f4xx.h"
void Led_Config(void);#endif
led.c中的代码
#include "led.h"/*
函数功能:LED初始化
形参:void
返回值:void
说明:1、打开GPIOB时钟2、PB8 ----- 通用推挽模式 PB9 ----- 通用推挽模式*/void Led_Config(void)
{/**库函数版本*/ GPIO_InitTypeDef GPIO_InitStruct;//声明结构体变量RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//打开GPIOB的时钟//初始化PB8和PB9GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;//通用输出GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;//第八号管脚GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;//无上下拉GPIO_InitStruct.GPIO_Speed = GPIO_Fast_Speed;//速度50MhzGPIO_Init(GPIOB, &GPIO_InitStruct);GPIO_SetBits(GPIOB, GPIO_Pin_8);//默认灭GPIO_SetBits(GPIOB, GPIO_Pin_9);//默认灭
}
main.h中的代码
#ifndef _MAIN_H
#define _MAIN_H#include "stm32f4xx.h"
#include "led.h"#endif
main.c中的代码
#include "main.h"
int main()
{Led_Config();//LED初始化while(1){ /**库函数点亮LED(PB8、PB9)*///方式一不使用宏定义GPIO_ResetBits(GPIOB, GPIO_Pin_8);GPIO_ResetBits(GPIOB, GPIO_Pin_9);GPIO_SetBits(GPIOB, GPIO_Pin_8);GPIO_SetBits(GPIOB, GPIO_Pin_9);}
}
两盏蓝色的就是点亮的灯
博文就先写到这里,下一篇我们来写按键的操作,如果这篇博文对你有帮助赶紧关注、点赞、收藏吧,感谢你的支持!
【10天基于STM32F401RET6智能锁项目实战第2天】(分别用库函数和寄存器点灯)相关推荐
- 10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程)
10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程) 一.环境搭建 二.新建工程 一.环境搭建 1.安装keil5 2.安装支持包 这里按照需求安装支持包,有F4和F1的支持 ...
- 【10天基于STM32F401RET6智能锁项目实战第2天】用按键点灯----GPIO的输入和输出
用按键点灯----GPIO的输入和输出 一.原理讲解 二.代码实现 这只是提供一个思路给你参考如何做这样一个东西,具体不同型号的单片机初始化都是不一样的,但是基本原理都是差不多的,如果你对这个项目有兴 ...
- 【10天基于STM32F401RET6智能锁项目实战第4天】外部中断的按键实现语音控制
外部中断的按键实现语音控制 一.实现语音功能 1.语音模块的资料 2.代码实现 二.外部中断的按键实现语音控制 一.实现语音功能 1.语音模块的资料 首先我们要做的就是了解语音模块是怎么使用的,那么就 ...
- 【10天基于STM32F401RET6智能锁项目实战第2天】GPIO与寄存器
GPIO与寄存器 一.GPIO的作用.数量与命名 二.GPIO口的四大模式 三.寄存器 一.GPIO的作用.数量与命名 二.GPIO口的四大模式 三.寄存器 更多的寄存器的实际操作会在后面的代码中讲解 ...
- 10天智能锁项目实战第1天(了解单片机STM32F401RET6和C语言基础)
10天智能锁项目实战第1天(了解单片机STM32F401RET6和C语言基础) 一.学习目标 二.了解单片机STM32F401RET6 三.C语言基础 一.学习目标 二.了解单片机STM32F401R ...
- Python基于AIML智能聊天机器人实战(4)- 机器人自学习能力集成
一.前言 本文是<Python基于AIML智能聊天机器人实战>第四篇:AIML自学习能力集成: AIML是智能对话机器人具有里程碑意义的开源项目,曾斩获多项国际大奖,是基于检索技术的闲聊式 ...
- 基于 Netty 网络编程项目实战课程
一 基于 Netty 网络编程项目实战课程 1项目介绍 2Netty 介绍与相关基础知识 2.1Netty 介绍 简介 Netty 是由 JBOSS 提供的一个 java 开源框架.Netty 提供异 ...
- Python基于AIML智能聊天机器人实战视频教程-张子良-专题视频课程
Python基于AIML智能聊天机器人实战视频教程-244人已学习 课程介绍 Python基于AIML的智能聊天机器人开发实战课程,包括典型案例.基础理论.功能拓展.源码框架解读四个方 ...
- 基于C++的OpenCV项目实战——文档照片转换成扫描文件
基于C++的OpenCV项目实战--文档照片转换成扫描文件 一.背景 前段时间都是基于Python的OpecCV进行一些学习和实践,但小的知识点并没有应用到实际的项目中:并且基于Python的版本的移 ...
最新文章
- 表示层 业务逻辑层 数据层(UI BLL DAL)
- 现代软件工程讲义4 Scrum/Sprint
- DayDayUp:追梦赤子心——1024,你好!程序猿们的节日!
- jquery获取html文件大小,jQuery获取file表单选择文件的路径、名字、大小、类型_忘却_前端开发者...
- php for linux配置文件,linux配置php运行环境
- 工作375-input readonly
- idea 版本控制忽略文件、文件夹设置
- xml学习中的趣事一件----嘿嘿!
- 提高.net网站的性能
- .net 编译、反编译、查壳、脱壳、反混淆工具
- 【探索PowerShell 】【七】变量
- oracle数据库左链接,Oracle数据库中的左连接与右连接
- Zynga以特别的《CSR Racing 2》系列活动庆祝布加迪110周年
- 买域名+配置SSL站点
- 新视野大学英语(1)课本单词汇总
- 2020-05-25
- games101学习笔记_Geometry1(几何)
- 2016.2.10-2.24 中关村图书大厦实习--图书管理系统;
- 编译原理 机械工业出版社 课后答案 GitHub链接
- 京东店铺如何做基础评价?这样做轻松500+评