江科大stm32之“点灯大师”

这篇具有很好参考价值的文章主要介绍了江科大stm32之“点灯大师”。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

声明:文章中出现的资料多数来自江科大视频资料,本文是我学习stm32的随手笔记

目录

一、准备

二、实现星星点灯

1、接线图

2、原理

3、步骤

(1)使用RCC开启GPIO时钟

(2)使用GPIO_Init函数初始化GPIO

(3)用输出或者输入函数控制GPIO口

三、点灯大师

一、准备

本次学习内容是经典的点灯入门到成为能实现流水灯的“点灯大师”

先新建一个工程

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

同时在工具选项中把Debug设置为stlink

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

有关工程创建过程可以移步到我上一篇笔记:https://blog.csdn.net/weixin_61968569/article/details/135986156?spm=1001.2014.3001.5501

二、实现星星点灯

1、接线图

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

所需配件:面包板,四根跳线,一个LED(长脚正极,短脚接负极),stlink

2、原理

要实现IO口的输出,一般有三个步骤:

(1)使用RCC开启GPIO时钟

(2)使用GPIO_Init函数初始化GPIO

(3)用输出或者输入函数控制GPIO口

3、步骤

(1)使用RCC开启GPIO时钟

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图1 GPIO基本结构

由图1可知,若LED接A0口,需要用到APB2外设GPIOA,打开库函数后缀名为rcc.h

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图2 rcc.h

不难找到 RCC_APB2PeriphClockCmd,该函数作用是开启时钟,将其复制粘贴到主函数中,右键定位,可查看所需参数

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图3 rcc.c

结合图1可以得知,我们需要使用到APB2外设GPIOA,同时第二个参数起使能—ENABLE

(2)使用GPIO_Init函数初始化GPIO

时钟打开后,就要进行GPIO口的初始化,我们先使用GPIO_Init();    查看所需要的参数

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图4 GPIO_Init

由图4可知,我们需要传入一个GPIOx 和 GPIO_InitStruct的结构体,那么就简单了,右键GPIO_InitTypeDef定位

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图5 InitTypeDef

如图5所示,结构体里有三个变量,则初始化如下:

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图6 初始化变量

对于变量如何详细初始化,这里我介绍其中一个步骤,其余类似:

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图7 Mode

初始化的时候一步一步来,先定位Mode,如图8所示

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图8 定位

选中蓝色标注的GPIOMode_TypeDef,按住ctrl+f,如图9所示

江科大stm32之“点灯大师”,stm32,嵌入式硬件,单片机

图9 Mode_TypeDef

这里介绍一下mode各个定义:

AIN是模拟输入

IN_FLOATING是浮空输入

IPD 下拉输入

IPU 上拉输入

OUT_OD 开漏输出

OUT_PP 推挽输出

AF_OD 复用开漏

AF_PP 复用推挽

(3)用输出或者输入函数控制GPIO口
/*设置PA0引脚的高低电平,实现LED闪烁,下面展示3种方法*/
		
		/*方法1:GPIO_ResetBits设置低电平,GPIO_SetBits设置高电平*/
		GPIO_ResetBits(GPIOA, GPIO_Pin_0);					//将PA0引脚设置为低电平
		Delay_ms(500);										//延时500ms
		GPIO_SetBits(GPIOA, GPIO_Pin_0);					//将PA0引脚设置为高电平
		Delay_ms(500);										//延时500ms
		
		/*方法2:GPIO_WriteBit设置低/高电平,由Bit_RESET/Bit_SET指定*/
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);		//将PA0引脚设置为低电平
		Delay_ms(500);										//延时500ms
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);			//将PA0引脚设置为高电平
		Delay_ms(500);										//延时500ms
		
		/*方法3:GPIO_WriteBit设置低/高电平,由数据0/1指定,数据需要强转为BitAction类型*/
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0);		//将PA0引脚设置为低电平
		Delay_ms(500);										//延时500ms
		GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)1);		//将PA0引脚设置为高电平
		Delay_ms(500);										//延时500ms

注意要添加Delay.h

三、点灯大师

取反符号可以自己尝试一下加或者不加,有不同的效果,大致思路是一样的,就是Pin的引脚需要全部赋值,而不是单纯赋值0号引脚,接着就是GPIO函数的调用,需要自行体会文章来源地址https://www.toymoban.com/news/detail-832850.html

#include "stm32f10x.h"
#include <Delay.h>
int main(void){
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开时钟
	GPIO_InitTypeDef GPIO_InitStruct;//初始化结构体
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_All;				//GPIO引脚,赋值全部引脚
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
	GPIO_Init(GPIOA,&GPIO_InitStruct);	
	while(1){
		GPIO_Write(GPIOA,~0x0001);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0002);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0004);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0008);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0010);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0020);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0040);
		Delay_ms(100);
		GPIO_Write(GPIOA,~0x0080);
		Delay_ms(100);
	}
}

到了这里,关于江科大stm32之“点灯大师”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

    嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

    核心:本文共4个小实验: 第一个:LED灯闪烁 第二个:LED流水灯 第三个:按键控制LED 第四个:光敏传感器控制蜂鸣器 1.1 LED、蜂鸣器、面包板 LED:发光二极管,正向通电点亮,反向通电不亮。 有源蜂鸣器(本实验):内部自带振荡源,将正负极接上直流电压即可持续发声,频

    2024年01月21日
    浏览(13)
  • 嵌入式学习笔记——STM32硬件基础知识

    嵌入式学习笔记——STM32硬件基础知识

    上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程,这都是解决的电脑端的开发环境问题,还没有到实际的开发板上,我们的单片机是都是焊接在开发板上的,PCB上有着它所需的工作电路。并不是直接给供电电压就可以让其工作的,本文主要是简介一下

    2024年01月22日
    浏览(54)
  • 嵌入式硬件——stm32F103C8T6

    嵌入式硬件——stm32F103C8T6

    如下图:    处理器核心:STM32F103C8T6内置了ARM Cortex-M3处理器,这是一种高性能、低功耗的32位RISC处理器,适用于嵌入式系统。 时钟速度:它可以工作在不同的时钟速度,最高主频可达72 MHz。 存储器:包括64KB的Flash程序存储器用于存储程序代码,以及20KB的SRAM用于存储数据和

    2024年02月05日
    浏览(69)
  • 嵌入式毕设分享 stm32人脸识别快递柜系统(源码+硬件+论文)

    嵌入式毕设分享 stm32人脸识别快递柜系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年04月10日
    浏览(98)
  • 嵌入式毕设分享 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

    嵌入式毕设分享 stm32智能鱼缸监控投喂系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月17日
    浏览(16)
  • 嵌入式毕设分享 stm32 RFID智能仓库管理系统(源码+硬件+论文)

    嵌入式毕设分享 stm32 RFID智能仓库管理系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(45)
  • 【嵌入式学习笔记】嵌入式基础9——STM32启动过程

    【嵌入式学习笔记】嵌入式基础9——STM32启动过程

    程序段交叉引用关系(Section Cross References):描述各文件之间函数调用关系 删除映像未使用的程序段(Removing Unused input sections from the image):描述工程中未用到被删除的冗余程序段(函数/数据) 映像符号表(Image Symbol Table):描述各符号(程序段/数据)在存储器中的地址、类

    2024年02月15日
    浏览(37)
  • 嵌入式Linux驱动开发之点灯

    嵌入式Linux驱动开发之点灯

      使用驱动开发的方式点亮一个LED灯。看看两者有啥区别不? 首先查看原理图,看看我们的板子上的LED等接在哪一个IO口上面。 好了,看原理图我们知道LED灯接在芯片的GPIO1的第三个引脚上面,也就是GPIO1_IO03。 先掌握三个名词 CCM: Clock Controller Module (时钟控制模块) IOMUXC : I

    2024年02月01日
    浏览(18)
  • stm32嵌入式实验考核

    STM32 实验考核题目 1. 利用 STM32 小板实现:控制外接 LED 灯每隔 3 秒钟亮暗变换,同 时在 PC 机上显示 MCU 的计时时间,MCU 的初始时间由 PC 机 方设置。 2. 利用 STM32 小板实现:利用导线外接 GPIO 口模拟 2 个按键输入, 根据输入组合的四种情况,分别控制三色灯四种流水灯效果

    2024年02月03日
    浏览(17)
  • 嵌入式 STM32 通讯协议--MODBUS

    嵌入式 STM32 通讯协议--MODBUS

    目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议  二、MODBUS通信协议 1、概述 2、MODBUS帧结构  协议描述 3、MODBUS数据模型   4、MODBUS事务处理的定义 5、MODBUS功能码  6、功能码定义   7、MODBUS数据链路层 8、MODBUS地址规则  9、MODBUS帧描述 10、MODBUS两种

    2024年02月11日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包