外设实战总集之LED

2014-6-4

现在开发环境搭建好了,接下来先从最基本的开始,最基本的当然是驱动LED。

接下来是实战步骤:

一、查看电路原理图,LED1对应的是PA2,LED2对应的是PA3,两个LED都是灌电流方式驱动,所以GPIO设置成输出,当输出低电平时,LED亮,输出高电平是,LED灭。

二、开始编写代码:

注意在LED文件中添加包含头文件:

#include "stm32f0xx.h"

下面一些宏和库函数都在stm32f0xx.h文件中有声明

1.初始化LEDS对应的IO外设时钟:

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

2.初始化LEDS对应的IO管脚

GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.GPIO_Pin =GPIO_Pin_2 | GPIO_Pin_3;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;

GPIO_InitStruct.GPIO_Speed =GPIO_Speed_Level_1;

GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_SetBits(GPIOA, GPIO_Pin_2 | GPIO_Pin_3);

3.设置LED1和LED2亮的函数,也就是设置对应管脚输出低电平

GPIO_ResetBits(GPIOA, GPIO_Pin_2 );

GPIO_ResetBits(GPIOA, GPIO_Pin_3 );

4.设置LED1和LED2灭的函数,也就是设置对应管脚输出高电平

GPIO_SetBits(GPIOA, GPIO_Pin_2 );

GPIO_SetBits(GPIOA, GPIO_Pin_3 );

5.软件延时函数

extern void Delay(int t)

{

int i,j,k;

for(i = 0; i < t;i ++)

for(j = 0 ; j < 100;j++)

for(k = 0 ; k < 100;k ++);

}

6.测试这些函数是否能用

在main函数中:

int main(void)

{

LEDS_Init();

while(1){

LED1_ON();

LED2_OFF();

Delay(1000);

LED1_OFF();

LED2_ON();

Delay(1000);

}

}

编译并下载运行,可以看到两个灯交替亮灭,时间间隔大约1S。这样就验证完了LED部分了。

目前只是用到了IO输出,后面还会需要用到IO输入的。

外设实战总集之LED

时间: 2024-12-14 10:50:47

外设实战总集之LED的相关文章

外设实战之KEY(查询方式)

2014-6-5 之前已经能驱动LED,这只是用到GPIO的输出功能,接下来要用到GPIO的输入功能.把输入IO连到KEY上. 两个按键,KEY1和KEY2,定义按下KEY1让LED1亮,弹起让LED1灭.按下KEY2让LED2亮,弹起让LED2灭. 虽然查询方式会降低系统的效率,但很多场合还是少不了查询方式,初期先用查询验证代码逻辑,后面会改成中断方式来完善. 接下来是实战步骤: 一.查看电路原理图: 两个按键,KEY1对应的是PF6,按下时为低电平.KEY2对应的是PF7,按下时为低电平.

基于W5500的NetBIOS应用实例

 已刊登在<无线电>2月刊 一 实例背景 最近一个做智能家居的朋友面临这样的一个烦恼,他想让用户通过智能手机在家里方便地控制家居设备,又想让用户免除下载安装App的麻烦,通过浏览器直接打开设备内嵌的网页便可实现控制.但是设备的IP地址都是通过家里的路由器自动获得的,设备上又没有屏幕来显示其IP地址.问我有没有办法不输入IP地址来实现浏览器访问该设备网页的办法,就是类似DNS之类,但是无需连外网,只在家庭网络内能访问即可. 这使我想起一个古老的协议,NetBIOS(Network Basic

基于W5500的嵌入式SNMP代理端实现

 一 实验背景 最近一个做焊接设备的朋友想在焊机上添加监控的新功能,实时获取焊机的温度.功耗等参数,还可简单控制,实现对集群焊接设备的网络化管理.而这个朋友不想在开发管理系统上花太多精力,想找一个开源的管理软件来实现他的需求.这让我想到了简单邮件管理协议SNMP,它生来就是为搞网络管理服务的.能广泛兼容各网络设备,一经推出就得到了广泛的应用和支持,几乎所有的网络设备生产厂家都实现了对SNMP的支持,大多数网络管理系统和平台也都是基于SNMP的.事实上,目前SNMP已成为网络管理领域中的工业标

使用寄存器点亮LED——编程实战

stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且,就算配置好GPIO寄存器,我们还必须有一步不能缺少的操作,那就是开启对应GPIO的时钟.在stm32的编程中,开启对应时钟是必不可少的一个操作,而且,开启时钟的操作必须在配置相应寄存器之前,以GPIO为例,如果我们先配置GPIO的寄存器,不开启时钟或者先配置GPIO寄存器,最后再开启时钟,都不能正

[STM32F429-DISCO-HAL]2.先学会点亮LED和使用LCD,看看各外设他们都是怎么被玩的

  首先就简单的一秒闪烁一次LED灯,进而类比推理其他外设的配置过程.然后呢我们就用上LCD吧,毕竟这块板上占地面积最大的就是这个2.4'LCD了.   先贴出简洁的main函数.很干净,比较容易看懂. int main(void) { /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, Flash preread and Buffer caches - Systick timer is configu

pcDuino 硬件LED驱动实战

最近调驱动时,调试led时遇到了点问题,于是回过头来再写个led裸板程序.在我写的pcDuino第一个裸板程序uart的基础上,再写个led裸板程序还是很轻松的.很多人觉得没有必要写什么pcDuino裸板程序,觉得没啥意义.我觉得可以用来熟悉硬件,特别是想做底层驱动开发,以及系统移植,熟悉底层硬件还是有用的.其实做底层驱动开发,也是跟硬件打交道,硬件相关的操作和裸板程序是一样的.下面介绍怎样在pcDuino上跑一个最简单的led裸板程序. 开发环境: 宿主机:ubuntu 12.04 64位 目

linux驱动(九)platform驱动模型详解,以及基于platform驱动模型的led驱动

参考: http://blog.csdn.net/qq_28992301/article/details/52385518 http://blog.csdn.net/zoe6553/article/details/6372445 http://blog.chinaunix.net/uid-25014876-id-111745.html 1:什么是platform总线?platform总线是区别于实体总线USB. I2C.SPI .PIC总线的虚拟总线,一些usb设备选址的话需要通过USB总线来进

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

驱动实现led,pwm和中断基础知识

2015.4.8星期三 晴天 今天老师讲的内容是内核编写led和pwm驱动,实现花样灯和放歌的功能.理解应用和驱动的对接,最后自己实现了在放歌的时候根据歌曲的节奏亮灭一个小灯,应为两个独立的驱动都已经写好,想要组合其实很简单,只要在主调函数里面打开两个驱动的设备节点,分别进行操作并有机的组合在一起就行了.最后老师复习了中断的一些基础知识,总结一下: 异常处理:当异常发送时:nand flash 拷贝到sdram中运行,这是和nor flash 的区别之一 1.拷贝cpsr到spsr2.设置适当的