小结-stm32 驱动LED灯

使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位。

http://www.cnblogs.com/xiaobo-Linux/

然后,端口使能:

//³õʼ»¯PB5ºÍPE5ΪÊä³ö¿Ú.²¢Ê¹ÄÜÕâÁ½¸ö¿ÚµÄʱÖÓ
//LED IO³õʼ»¯
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 Êä³ö¸ß
}
 

GPIO_SetBits(GPIOB,GPIO_Pin_5);

这个必须要写,取地址。

GPIO_SetBits(GPIOB,GPIO_Pin_5);这个可以不写,主要是开机不让LED亮;

SetBits 是 高电平 1 ;

RestBits是低电平 0 ;

然后是位带操作:

#ifndef __LED_H
#define __LED_H
#include "sys.h"

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

void LED_Init(void);

#endif

#ifndef __LED_H

#define __LED_H

..

..

#endif

是防止重复加载头文件

#define LED0 PBout(5)  out是输出 Int是输入

输出PB.5引脚

在main.c中直接就可以像c51那样写 LED0 =1;LED0=0;

时间: 2024-10-11 12:07:12

小结-stm32 驱动LED灯的相关文章

蜂鸣器驱动与led灯驱动,按键驱动

一:LED驱动编写 要编写LED驱动,首先的知道开发板的构造:开发板分为核心板与底板:编写驱动的第一步就是要看开发板,找到LED灯在开发板上的位置及所对应的名字:第一步就要查看核心板电路图,以及底板电路图:最后就是查看开发板手册,然后进行程序编写: 通过看开发板我们可以知道LED灯的位置的核心板上,在核心板上找到LED的电路图,Ctrl+F可以在文档中快捷查找: 通过电路图我们可以看出:LED灯的一端已经接高电平,只要给另一端加低电平LED就会被点亮. 然后查看LED在核心板上的引脚: 由上图我

STM32 用c语言控制4个LED灯从左向右无限流动

在用c语言写LED流水灯的前提条件是配置好其他环境,这里我就不说环境了, 想让LED灯无限循环时,首先要想到的是无限循环函数,我这里利用的是for函数 无限循环. #include "stm32f10x_conf.h"#include "led.h"#include "delay.h" int main(void){ LED_Init(); delay_init(); int i; for(i=0;;i++) { if(i%5==1) { LED

让我们的LED灯跑起来

相信我们通过前面两章的讨论我们基本上对51单片机的代码编写有了一定初步的了解了,所以我们如果还是有很多不懂得的地方我们一定得结合图片,或者去网上查找一些相关的资料,一定得让不懂得的地方彻底弄懂,不要让我们的麻烦越积越多,所以我们的步子一定不能迈得太大,慢慢的来让我们的基础牢固才能进行我们今后的stm32的学习.那么我们今天讨论一下我们如何让我们的LED灯跑起来! 那么我们提出了我们今天的目标,我们不妨先做一个小的实验点亮我们一行的LED灯. 对应我们的原理图,和我们的真值表,如下图(下面我们的点

点亮一个LED灯

设计定义: 二选一多路器 两个输入IO,a.b.可以是高电平, 输入按键按下时,LED灯与a端口状态保持一致, 按键释放时,LED灯与b端口状态保持一致 设计输入:创建一个project 编写功能代码 module LED(a,b,key_in,led_out); input a;//输入端口a,b: input b; input key_in;//按键输入,实现输入通道的选择 output led_out;//led控制端口 assign led_out=(key_in==0)?a:b;//当

我的 FPGA 学习历程(02) —— 实验点亮 LED 灯

关于 Quartus 的操作可以使用 Quartus 自带的帮助,帮助中有全套的操作教程. 中文网络教程链接(链接至altera中文官网,点击观看) Quartus II 软件设计系列:基础 Quartus II 软件中的原理图设计 SignalTap II 嵌入式逻辑分析器 使用Nios II 处理器 系统控制台 Nios II 处理器开发软件:设计流程 Nios II 处理器开发软件:MMU和MPU 无论是英文帮助还是网络中文教程,他们的前提是你是有基础的,这些教程之会教给你我们的 quar

TQ2440上LED灯闪烁效果的驱动程序实现

本篇文章的驱动程序实现的要点:一是实现了设备文件的自动创建,不用每次运行驱动都要使用mknod指令自动创建设备文件,本文通过udev(mdev)来实现设备文件的自动创建.二是对LED灯的控制不是通过直接设置相关GPIO的二进制位来实现,本文使用linux系统中提供的对S3C2410 GPIO的操作函数,直接实现对相关GPIO的控制.三是实现了LED灯的闪烁效果,本文虽然没有在驱动程序代码中直接实现LED灯的闪烁效果,但是通过上层应用程序调用驱动程序中的ioctl间接实现了LED灯的闪烁效果. 一

起航,第一个程序——还是LED灯

如同学基本语言一样,helloworld是很多语言的第一个程序.在嵌入式开发中,点亮LED灯也是各种架构和开发板的第一个程序,其中很多东西是和单片机例如stm32是类似的,只是,现在我们没有了库函数,我们要自己完成一些东西. 先说启动文件,st官方已结给我们做好了,但是jz2440开发板没有统一的启动文件,需要自己编写,那么,基础的arm汇编就得有所熟悉,在之后的学习中,遇到一个指令就学习一个. (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1.0组成的机器码,可以由CPU读取执行.

如何在家自制LED灯?很简单,我来告诉你!

首先LED分凸头.平头和凹头,当中的凹头是没无方向性. 做示宽灯这类晚间才运用的光源,用凹头就好,它没无方向性,可将整个反光碗照亮. 做转向灯等指示性的光源用,准绳上应该用凸头的,它是个聚光镜,投映的光点小.亮度高.投光方向性强,不易受外界光照的影响. 但是平凡LED的亮度远不及白炽灯,包括所谓超亮型的,跟同体积.同功耗的白炽灯相比,在少数条件下仍有差距. 指望靠十几只乃至几只LED获得一个灯泡的结果是不实在际的,比方做佳星的转向灯光源时,原灯具的反光板根本上没有作用了,完全要靠LED本身收回的

TI-RTOS 控制LED灯

TI将FreeRtos放在自家芯片上,于是得到了TI-RTOS,两者的区别我还不太清楚,近日因为项目需要,开始试用TI-RTOS,先来一个点灯的实验吧,算是 hello world. 这次手上的板子是 CC1310 LaunchPad Rev 1.3, 上面有两个灯,两个按键,照常理先调灯的驱动会更简单些.打算做成一个灯亮,一个灯1秒闪一次. 这样的功能一般是和定时器,IO打交道,不过在os上,定时可以暂时用task_sleep来代替,好在TI-RTOS默认启用这个模块的,用起来相当方便. IO