3.跑马灯

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

1.GPIO的输出模式:

  • 推挽模式输出:因为LED0和LED1阳极都是3.3V,需要将阴极设置为低电平才可以点亮LED;
  • 操作io口时,必须引入源文件和头文件;
  • 关于时钟的文件存放在rcc中;

2.GPIO库函数介绍:

(1).1个初始化函数:

  1. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
  2. 作用:初始化一个或多个io口(同一组)的工作方式和速度,
  3. 该函数主要是操作GPIO_CRL(CRH)寄存器,在上拉或下拉的时候有设置BSRR或BRR寄存器;
  4. 主要包括设置指定初始化io口、设置工作模式(8种)、设置io口输出速度;
注意:
  • 外设(包括GPIO)在使用之前,几乎都要先使能对应的时钟;
  • 可以一次初始化一个io组下的多个io,前提是这些io口的设置方式一样;

(2).2个读取输入电平函数:

  1. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. 作用:读取某个GPIO的输入电平。实际操作GPIOx_IDR寄存器;
  3. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
  4. 作用:读取某组GPIO的输入电平。实际也是操作GPIOx_IDR寄存器;

(3).2个读取输出电平函数:

  1. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. 作用:读取某个GPIO的输出电平。实际操作的是GPIOx_ODR寄存器;
  3. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
  4. 作用:读取某组GPIO的输出电平。实际也是操作GPIOx_ODR寄存器;

(4).4个设置输出电平函数:

  1. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. 作用:设置某个io口输出为高电平(1)。实际操作BSRR寄存器;
  3. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  4. 作用:设置某个io口输出为低电平(0)。实际操作BRR寄存器;
  5. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
  6. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
  7. 以上两个函数不常用,也是用来设置io口输出电平;

3.相关引脚原理图:

 4.跑马灯实验步骤:

  1. 使能io口时钟,调用RCC_APB2PeriphClockCmd()函数实现;
  2. 初始化io口模式,调用GPIO_Init()函数实现;
  3. 操作io口,输出高低电平;GPIO_SetBits()和GPIO_ResetBits()函数实现;
 注意:

        在使能io口时钟时,不同的io组,调用的时钟使能函数不一样;文章来源地址https://www.toymoban.com/news/detail-498219.html

(1)主函数:

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

int main(){
    
    LED_Init();     //LED初始化
    delay_init();   //延时初始化
    while(1){
        delay_ms(100);
        GPIO_ResetBits(GPIOB,GPIO_Pin_5);   //LED0亮
        GPIO_SetBits(GPIOE,GPIO_Pin_5);     //LED1不亮
        delay_ms(100);
        GPIO_SetBits(GPIOB,GPIO_Pin_5);   //LED0不亮
        GPIO_ResetBits(GPIOE,GPIO_Pin_5);   //LED1亮
        
    }

}

(2)LED头文件:

#ifndef __LED_H
#define __LED_H

void LED_Init();

#endif

(3)LED初始化功能函数:

#include "led.h"
#include "stm32f10x.h"

/*
    1.功能:LED的初始化
    2.返回参数:无
*/
void LED_Init(){
    GPIO_InitTypeDef GPIO_InitStruct;
    
    //1.初始化io时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);
    
    //2.配置GPIO
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_OD;  //推挽输出模式->既可以输出高电平也可以输出低电平
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;    //PB5
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;    //输出速率50MHz
    GPIO_Init(GPIOB,&GPIO_InitStruct);
    GPIO_SetBits(GPIOB,GPIO_Pin_5); //LED0灭->LED对应的引脚,高电平灭,低电平亮
    
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_OD; //推挽输出模式
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;    //PE5
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOE,&GPIO_InitStruct);  
    GPIO_SetBits(GPIOE,GPIO_Pin_5); //LED1灭
    
}

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

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

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

相关文章

  • CSS按钮-跑马灯边框

    思路很简单,实现方法有很多很多。但是大体思路与实现方法都类似:渐变色 + 动画,主要区别在动画的具体实现

    2024年02月11日
    浏览(47)
  • CSS 之 跑马灯边框

    一、简介 ​ 之前有做过渐变色边框的样式,然后某天刷抖🎵,看到某个老师在讲跑马灯的样式效果,于是就自己尝试实现一下跑马灯样式的边框,虽然这种样式并不常见(基本没卵用),其使用场景我至今没想到,但是它足够花里胡哨,玩的就是花活。CSS才是前端最难精通

    2024年01月17日
    浏览(41)
  • 跑马灯实验(stm32)

    说明:以下内容参考正点原子的相关资料 这里使用的是位带操作来实现操作某个 IO 口的 1 个位 相应的库函数操作代码。 BSRR:端口位设置/清除寄存器 BRR:端口位清除寄存器 可以看到红绿灯交错闪烁

    2024年02月13日
    浏览(44)
  • Android 实现跑马灯效果

    Android中实现跑马灯效果有多种方式,本篇简单介绍下: 1: TextView属性实现 这里需要注意下: 需要限制textview的宽度,不能设置为wrap_content 启动跑马灯效果需要获取焦点requestFocus(). 2: 代码实现 3: 自定义 view实现 这里可以使用动画的效果实现. 4: 实现竖直效果的跑马灯

    2024年01月18日
    浏览(58)
  • Vue跑马灯简单案列

    套在自己的vue模板里面即可 content是显示的内容,shouldMove是否滚动(如果大于了文本框才滚动,否则禁止不懂),showResult是否显示滚动条 效果

    2024年02月22日
    浏览(42)
  • 基于Verilog的跑马灯设计

    设计一个能够有多种工作模式控制的8个灯亮灭的电路。 工作模式1:按照从左到右的方向,依次点亮每一盏灯,然后依次熄灭每一盏灯; 工作模式2:分成两组灯,前四个灯为1组,后四个为2组,1组灯按从左到右依次点亮,同时2组灯按从右到左依次点亮,然后两组灯按各自点

    2024年02月08日
    浏览(44)
  • uni小程序 跑马灯效果

    写在前面 前几天帮一个朋友咋小程序上加一个类似于跑马灯的效果,本自己手写了一个。(代码和截图都在下方) 效果展示 等我截图~~~ 代码展示(布局代码) 主要就是图片css哪里加了一个“ flex-shrink: 0; ”,因为只是本地的一个功能,所以我就图片数据就写死了,需要的自

    2024年02月12日
    浏览(41)
  • 应广单片机实现跑马灯

            应广单片机处处体现其mini的特性,非常适合做各种方案开发,特别是点灯,什么跑马灯,氛围灯,遥控灯,感应灯,拍拍灯等,用应广都OK。        跑马灯是基础中的基础,我搭了一个框架,要进行扩展或是修改也很容易。不多说,上代码。 #include    \\\"extern.h\\\"

    2024年02月09日
    浏览(40)
  • CSS中如何实现文字跑马灯效果?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月09日
    浏览(62)
  • JavaFx 实现水平滚动文本(跑马灯效果)

    原文地址: JavaFx 实现水平滚动文本(跑马灯效果) - Stars-One的杂货小窝 本文是以TornadoFx框架进行编写,各位使用JavaFx可以参考 代码已经封装在common-controls库中 实现原理就是利用了JavaFx里的动画效果去修改scrollpane的translateX属性,原本想在text上改造的,发现文字过多就不行了,最终还

    2023年04月27日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包