跑马灯实验(stm32)

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

说明:以下内容参考正点原子的相关资料

LED的功能代码

led.c

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	 //使能PB,PE端口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //LED0-->PB.5 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.5
 GPIO_SetBits(GPIOB,GPIO_Pin_5);						 //PB.5 输出高

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    		 //LED1-->PE.5 端口配置, 推挽输出
 GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
 GPIO_SetBits(GPIOE,GPIO_Pin_5); 						 //PE.5 输出高 
}

led.h

#ifndef __LED_H
#define __LED_H	 

#include "sys.h"
#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5	

void LED_Init(void);//初始化

		 				    
#endif

硬件相关说明

跑马灯实验(stm32),单片机,stm32,单片机,嵌入式硬件
跑马灯实验(stm32),单片机,stm32,单片机,嵌入式硬件

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"

 int main(void)
 {	
	delay_init();	    //延时函数初始化	  
	LED_Init();		  	//初始化与LED连接的硬件接口
	while(1)
	{
		LED0=0;
		LED1=1;
		delay_ms(300);	 //延时300ms
		LED0=1;
		LED1=0;
		delay_ms(300);	//延时300ms
	}
 }

代码的一些介绍

这里使用的是位带操作来实现操作某个 IO 口的 1 个位

#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5	

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))

相应的库函数操作代码。

GPIO_SetBits(GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 1,等同 LED0=1;
GPIO_ResetBits (GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 0,等同 LED0=0;

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  
  GPIOx->BSRR = GPIO_Pin;
}

#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
                                    ((PERIPH) == GPIOB) || \
                                    ((PERIPH) == GPIOC) || \
                                    ((PERIPH) == GPIOD) || \
                                    ((PERIPH) == GPIOE) || \
                                    ((PERIPH) == GPIOF) || \
                                    ((PERIPH) == GPIOG))
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))

BSRR和BRR

  • BSRR:端口位设置/清除寄存器
    跑马灯实验(stm32),单片机,stm32,单片机,嵌入式硬件
  • BRR:端口位清除寄存器

跑马灯实验(stm32),单片机,stm32,单片机,嵌入式硬件

实验结果

可以看到红绿灯交错闪烁
跑马灯实验(stm32),单片机,stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-540718.html

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

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

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

相关文章

  • 基于51单片机8位竞赛抢答器_倒计时可调+LED跑马灯

    (程序+proteus仿真+报告) Proteus仿真版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:Q006 资料下载链接 1、以单片机位核心,设计一个8位抢答器:同时供8名选手比赛,分别用6个按键表示; 2、无人抢答时,8个跑马灯循环点亮,数码管显示00; 3、设置一个

    2024年02月09日
    浏览(34)
  • 【STM32学习笔记】(6)—— 跑马灯实验详解

            在前面五篇STM32学习笔记中,我们已经初步认识了STM32芯片,并且了解STM32的常用寄存器,介绍了STM32的GPIO模式,STM32工程文件,以及最终讲解了如何为STM32添加源文件和头文件的步骤。但是前面的知识只能说是理论和基础,但是非常重要,如果STM32的理论知识不扎实

    2023年04月08日
    浏览(36)
  • 【正点原子STM32连载】第十章 跑马灯实验 摘自【正点原子】APM32E103最小系统板使用指南

    1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 跑马灯程序是嵌入式开发的一个经典程序,类似于学习C语言时,编写的“Hello World”程序。跑马灯本

    2024年02月02日
    浏览(47)
  • STM32入门——三种编写跑马灯程序的方法

    本文分别通过库函数、寄存器以及位操作完成跑马灯实验,使用的开发板是正点原子的min核心板。 图1 LED 与 STM32 连接原理图  通过min板的原理图可以看出两个LED灯分别接到PD2和PA8引脚,并且LED灯是共阳极,当IO口输出高电平,LED灭;输出低电平,LED亮。 在实际的程序编程中

    2024年02月06日
    浏览(39)
  • 手把手教你编写跑马灯——STM32

    新建一个文件夹 ,打开KeiL,projiece-----new vision projection  给文件命名(随便取)  根据自己开发板的信号选择对应的型号  在刚才创建的文件夹里面 新建一个main.c文件  双击source group 1,点击main.c,点击add  添加头文件 led.c main.c led就可以全亮然后全灭一直循环

    2024年02月08日
    浏览(55)
  • STM32F407ZGT6正点原子F4探索者开发板 -- 跑马灯例程

    LED0 - PF9 LED1 - PF10 PF9 = 0, LED0 亮,PF9 = 1,LED0 灭 PF10 = 0, LED1 亮,PF10 = 1,LED1 灭

    2024年02月15日
    浏览(52)
  • 跑马灯实验

             1.熟悉龙芯实验开发板、熟悉 VIVADO 的编译环境及操作流程。         2.掌握 FPGA 编程入门知识、利用门级方法实现简单逻辑电路。         3.继续学习 Verilog HDL 语法、掌握跑马灯的设计、熟悉调试过程。          本次实验用 Verilog HDL 语言来描述 6 个不

    2024年02月04日
    浏览(40)
  • 20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解)

    08第六集:LED闪烁第六集:LED闪烁和花式点灯上和花式点灯上.mp4 09第六集:LED闪烁和花式点灯下.mp4 【大文哥学习32位8051】20230704【冲哥视频】第六集的晶振时钟的学习困惑 2023/7/5 17:36 delay_ms(3000); 刷机的时候如果使用11.0592M的Fosc,3秒钟的延迟大概7秒钟。 刷机的时候如果使用

    2024年02月12日
    浏览(44)
  • Android --- 跑马灯效果

    跑马灯效果主要使用的控件为TextView,其中涉及的几个标签如下所示: android:ellipsize If set, causes words that are longer than the view is wide to be ellipsized instead of broken in the middle. You will often also want to set scrollHorizontally or singleLine as well so that the text as a whole is also constrained to a single line in

    2023年04月08日
    浏览(75)
  • 3.跑马灯

    推挽模式输出:因为LED0和LED1阳极都是3.3V,需要将阴极设置为低电平才可以点亮LED; 操作io口时,必须引入源文件和头文件; 关于时钟的文件存放在rcc中; void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 作用:初始化一个或多个io口(同一组)的工作方式和速度, 该函数

    2024年02月10日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包