外设实战之LED
来源:互联网 发布:万合天宜在那个软件 编辑:程序博客网 时间:2024/05/01 05:17
外设实战之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
- 外设实战之搭建开发环境
- 外设实战之KEY(查询方式)
- STM32外设驱动---LED
- led子系统之实战篇(实际led驱动编写)
- 点亮 LED 灯 , 外设基地址初始化
- 驱动实战-----OK6410驱动编程之led驱动1
- 驱动实战-----OK6410驱动编程之led驱动2
- S3C2440裸机实战 之二 驱动LED和KEY
- 外设篇之bq25890
- [nRF52832] 外设篇 | 实验一 LED 灯 及 BUTTON 按键
- 外设操作方式之发现
- 【整理】嵌入式外设之RS232
- 【整理】嵌入式外设之DMA
- PID算法实战之利用PWM控制LED以使光敏电阻稳定在特定值
- 实战基于Leap Motion体感外设使用as3_ANE开发
- EFM32外设--DMA之SPI+DMA
- EFM32外设--DMA之Timer+DMA+DAC
- 开创电子商务蓝海市场
- hdu 2108 Shape of HDU(计算几何)
- 基于云计算的网络安全探析--摘抄版
- 常用CSS命名参考资料
- 跟大家分享下Android布局文件layout.xml的一些属性值。
- 外设实战之LED
- oracle JOB
- cocos2dx --- 在游戏中显示HTML页面
- 用wordpress搭建了一个个人小站
- c and c++
- iOS应用崩溃日志揭秘
- ShareSDK for Android 只有新浪微博分享
- Android 如何将一个app 设置为持久app, 不被low memory kill 关闭
- find 文件选项