ARM开发(1) 基于stm32的led跑马灯

发布者:TranquilSoul最新更新时间:2019-08-19 来源: eefocus关键字:ARM  stm32  led跑马灯 手机看文章 扫描二维码
随时随地手机看文章

一 跑马灯原理: 

1.1 本实验实现2个led的跑马灯效果,即2个led交替闪烁。


1.2 实验思路:根据电路图原理,给led相关引脚赋予高低电平,实现电路的导通,使led灯发光。


1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 

二 实验步骤: 

2.1 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 

2.2 led.c代码(IO配置): 

#include “led.h” 

void LED_Init(void) 

{


     GPIO_InitTypeDef  GPIO_InitStructure;


     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);    //使能PB,PE端口时钟 

     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出

     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO速度为50MHz


     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                //LED0-->PB.5端口配置

     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);                      //根据设定参数初始化GPIOE.5

     GPIO_SetBits(GPIOE,GPIO_Pin_5);                          //PE.5 输出高电平

    }


2.2 main.c代码(实现跑马灯效果):


    #include "sys.h"

    #include "delay.h"

    #include "usart.h"

    #include "led.h"

    int main(void)

    { 

        delay_init();     //延时

        LED_Init();         //led初始化

        while(1)

            {   //led0亮,led1灭

                LED0 =0;

                LED1=1;

                delay_ms(300);

                //led0灭,led1亮

                LED0 =1;

                LED1=0;

                delay_ms(300);


            }

    } 


三 接线测试:


3.1 与板子接线测试效果良好,2个led交替闪烁,达到跑马灯效果。


关键字:ARM  stm32  led跑马灯 引用地址:ARM开发(1) 基于stm32的led跑马灯

上一篇:ARM开发(5)基于STM32的UART串口通信实验
下一篇:ARM开发(2)基于STM32的蜂鸣器

推荐阅读最新更新时间:2024-11-12 03:06

STM32 --UART串口通信
UART串口时序 UART串口协议参考下面文章: http://blog.csdn.net/gogomusic/article/details/54767502 UART串口配置 1)串口时钟使能。串口作为 STM32 的一个外设,其时钟由外设时钟使能寄存器控制,这里我们使用的串口1是APB2ENR寄存器的第14位。(除了串口 1 的时钟使能在 APB2ENR 寄存器,其他串口的时钟使能位都在 APB1ENR 寄存器,而 APB2(72M)的频率一般是 APB1(36M)的一倍。) 2)串口复位。当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目
[单片机]
<font color='red'>STM32</font> --UART串口通信
采用ARM和单片机的CPLD/FPGA高速数据处理系统
1 引 言 传统的数据采集系统一般采用单片机,系统大多通过PCI总线完成数据的传输。其缺点是数学运算能力差;受限于计算机插槽数量和中断资源;不便于连接与安装;易受机箱内电磁环境的影响。这些问题遏制了基于PCI总线的数据采集系统的进一步开发和应用。因此,需要一种更为简便通用的方式完成采集系统和计算机数据的交互。 数据采集系统性能的好坏,主要取决于它的精度和速度。在保证精度的条件下应尽可能地提高采样速度,以满足实时采集、实时处理和实时控制的要求。实践表明,采用ARM 32位嵌入式微处理器作为控制器,用USB(通用串行总线)和上位机连接构成的数据采集系统能大大提高系统数据处理的能力,降低对PC机和接口速度的依赖。 2 系统硬件设
[单片机]
采用<font color='red'>ARM</font>和单片机的CPLD/FPGA高速数据处理系统
STM32的DAC加TIMER应用演示
现在有如下图所示的这样一个需求,希望使用 STM32 芯片 来实现。 横轴表示时间,纵轴表示电压【3.3v为限】,不同时刻的电压输出不一样、持续时间也不尽相同。 此问题源于某高校STM32学习时的习题,这里拿出来一起交流探讨下。方法不是唯一的,尤其基于不同STM32系列。这里尽量使用通用、常规的方法,算是抛砖引玉。 显然,我们可以考虑使用STM32的 DAC 加 TI MER以及片内其它资源加以实现。 对于这个实现我们可以分两种方式完成,每一种方式同时也体现不同难度。 我们可以考虑下面两种应用情形: 第一种方式: MCU 除了做这一件事外,还做点别的,比方做按键响应、 ADC 采样这些,整体上没有太复杂的功能和要求。【中断
[单片机]
<font color='red'>STM32</font>的DAC加TIMER应用演示
ARM-Linux 内核移植--基于FL2440开发板(修改为Linux单系统)
硬件平台:FL2440开发板 内核版本:2.6.28 主机:ubuntu 11.04 内核版本:2.6.39 本来以为fl2440的nand flash大小为128M,问了客服才知道,现在FL2440使用的是现代的flash,现在都换成256M的了,只是飞凌的bootloader没有相应的修改,它使用的既不是u-boot,也不是vivi,而是自己的bootloader。现在修改bootloader源码中的nand.c 修改如下: //可更改删除分区,分区名字不可改 static struct Partition NandPart = { {0, 0x00020000, boot },
[单片机]
<font color='red'>ARM</font>-Linux 内核移植--基于FL2440开发板(修改为Linux单系统)
ARM协处理器指令
ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包括以下 5 条: CDP 协处理器数操作指令 LDC 协处理器数据加载指令 STC 协处理器数据存储指令 MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令 MRC 协处理器寄存器到ARM 处理器寄存器的数据传送指令 ......
[单片机]
STM32定时器输出PWM
一、PWM 1.定义 英文全称:PULSE WIDTH MODULATION,脉冲宽度调制。 脉冲:频率,方波 宽度:占空比(duty),高电平的宽度 2.用途 (1)控制输出的电压和电流 (2)灯光的亮度 (3)电机 二、编程细节 PWM输出是没有中断触发的,PWM由硬件输出波形,用了中断反而会影响系统定时的效率。 所以,记住以后使用定时器输出PWM都不需要使用到中断 1.如配置STM32F407的TIM14的通道1,10ms即100Hz. 1ms = 0.01s=100HZ 84000000 /8400 = 10000 10000/x = 100 x=100 得到周期8400-1,分频系数10-1 基本
[单片机]
<font color='red'>STM32</font>定时器输出PWM
基于ARM的嵌入式系统程序开发要点(五)
引言 在前面的文章中提到过,很多情况下应用程序需要在ARM跟Thumb状态之间相互切换,这部分就讨论交互工作的实现方法和一些注意问题。 1 需要交互的原因 前面提到过,Thumb指令在某些特殊情况下具有比ARM指令更为出色的表现,主要是在代码长度和窄带宽存储器系统性能两方面。正是因为Thumb指令在特定环境下的优势,它在很多方面得到了广泛应用。但是因为下面一些原因,Thumb又不可能独立地组成一个应用系统。 ◇ Thumb指令集在功能上只是ARM指令集的一个子 集,某些功能只能在ARM状态下执行,如CPSR和 协处理器的访问。 ◇ 进行异常响应时,处理器会自动进入ARM状态。 ◇ 从系统优化考虑,在宽带存储器上不应该放置 Th
[单片机]
基于<font color='red'>ARM</font>的嵌入式系统程序开发要点(五)
STM32下uIP移植问题
就我个人认为在uIP的移植中除了驱动之处有以下几点需要注意: 1.uip_timer 时钟要加入到中断中去。 2.各种appcall实现。如在tcp_client_demo.c 有如下语句 if(uip_len 199) { ((u8*)uip_appdata) =0; } strcpy((char*)tcp_client_databuf,uip_appdata); 这样在处理数据长时都是以tcp_client_databuf 数组的长来处理,这样不灵活,client从网络中接收到的数据长本来就是用一个全局变量uip_len来存储的。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved