基于库函数STM32流水灯的实现
为什么80%的码农都做不了架构师?>>>
不想详细说了,直接甩代码!里面乱码的先不用管,kell编辑器惹的祸
KEY_LED.c文件:
/********************************************************************************* @file KEY_LED.c* @author fire* @version V1.0* @date 2016-06-11* @brief °´¼ü¿ØÖÆled******************************************************************************* @attention
**/#include "stm32f10x.h"void setDelay(__IO uint32_t nCount) //¼òµ¥µÄÑÓʱº¯Êý
{for(; nCount != 0; nCount--);
}
void setGPIO(GPIO_TypeDef * GP,uint16_t IO,int TYPE){switch(TYPE){case 0:GP->BRR=IO; break; case 1:GP->BSRR=IO; break;case 2:GP->ODR ^=IO; break;default:break;}
}
void LED_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure;//¶¨ÒåÒ»¸öGPIO_InitTypeDefÀàÐ͵ĽṹÌåRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //¿ªÆôGPIOFµÄÍâÉèʱÖÓGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//ÉèÖÃÒý½ÅģʽΪͨÓÃÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //ÉèÖÃÒý½ÅËÙÂÊΪ50MHz GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//Ñ¡ÔñÒª¿ØÖƵÄGPIOFÒý½ÅGPIO_Init(GPIOF,&GPIO_InitStructure);//µ÷Óÿ⺯Êý£¬³õʼ»¯GPIO_Pin_AllsetGPIO(GPIOF,GPIO_Pin_All,0);//¹Ø±ÕËùÓÐledµÆ
}
void KEY_Init(void) //IO³õʼ»¯
{ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOC,ENABLE);//ʹÄÜPORTDʱÖÓGPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//PC13GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀÊäÈë GPIO_Mode_IPU/GPIO_Mode_IPDGPIO_Init(GPIOC,&GPIO_InitStructure);//³õʼ»¯GPIOE0GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PE0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀÊäÈë GPIO_Mode_IPU/GPIO_Mode_IPDGPIO_Init(GPIOE,&GPIO_InitStructure);//³õʼ»¯GPIOE0
}
int scanKey(){ int key1=GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_0);int key2=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13);if(key1==0&&key2==0){setDelay(0x000100);//È¥¶¶¶¯ if(key1==0&&key2==0){return 3;}return 0;}else if(key1==0||key2==0){setDelay(0x000100);//È¥¶¶¶¯ if(key1==0){return 1;}else{return 2;}}else{ return 0;// ÎÞ°´¼ü°´ÏÂ}
}
void key_led(int key){__IO uint32_t delaytime=0x030000;/* ·½·¨2£¬Ê¹Óù̼þ¿â¿ØÖÆIO */if(key==1){setGPIO(GPIOF,GPIO_Pin_0,2); //±ä»»×´Ì¬setGPIO(GPIOF,GPIO_Pin_7,2);setDelay(delaytime*3);setGPIO(GPIOF,GPIO_Pin_1,2);setGPIO(GPIOF,GPIO_Pin_6,2);setDelay(delaytime*3);setGPIO(GPIOF,GPIO_Pin_2,2);setGPIO(GPIOF,GPIO_Pin_5,2);setDelay(delaytime*3);setGPIO(GPIOF,GPIO_Pin_3,2);setGPIO(GPIOF,GPIO_Pin_4,2);setDelay(delaytime*3);}else if(key==2){setGPIO(GPIOF,GPIO_Pin_4,2); //±ä»»×´Ì¬setGPIO(GPIOF,GPIO_Pin_3,2);setDelay(delaytime*3);setGPIO(GPIOF,GPIO_Pin_5,2);setGPIO(GPIOF,GPIO_Pin_2,2);setDelay(delaytime*3);setGPIO(GPIOF,GPIO_Pin_6,2);setGPIO(GPIOF,GPIO_Pin_1,2);setDelay(delaytime*3);setGPIO(GPIOF,GPIO_Pin_7,2);setGPIO(GPIOF,GPIO_Pin_0,2);setDelay(delaytime*3);}else if(key==3){setGPIO(GPIOF,GPIO_Pin_All,2);setDelay(delaytime);}else{ setGPIO(GPIOF,GPIO_Pin_0,2); //±ä»»×´Ì¬setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_1,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_2,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_3,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_4,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_5,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_6,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_7,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_0,2); //±ä»»×´Ì¬setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_1,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_2,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_3,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_4,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_5,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_6,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_7,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_7,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_6,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_5,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_4,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_3,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_2,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_1,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_0,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_7,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_6,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_5,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_4,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_3,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_2,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_1,2);setDelay(delaytime);setGPIO(GPIOF,GPIO_Pin_0,2);setDelay(delaytime);}
}
KEY_LED.h文件,之前使用AVR都是可以直接include点C文件的,这个好像不行,还必须自己弄个点h文件过度
#include "stm32f10x.h"
void setDelay(__IO uint32_t nCount); //¼òµ¥µÄÑÓʱº¯Êý
void setGPIO(GPIO_TypeDef * GP,uint16_t IO,int TYPE);
void LED_Init(void);
void KEY_Init(void); //IO³õʼ»¯
int scanKey(void);
void key_led(int key);
main.c文件,带有执行入口的哦!
#include "stm32f10x.h"
#include "KEY_LED.h"
#include <stdio.h>int main(void)
{ int key=0,flag=0;LED_Init(); KEY_Init();NVIC_Configuration();while(1){key=scanKey();if(key==1)flag=1;if(key==2)flag=2;if(key==3)flag=3;key_led(flag);}
}
转载于:https://my.oschina.net/hibony/blog/703005
基于库函数STM32流水灯的实现相关推荐
- stm32流水灯程序设计实现
一.使用库函数的stm32流水灯程序设计实现 1.程序设计思路: 首先进行时钟配置,输入输出模式配置,最大速率设置:其次将GPIOA-5.GPIOB-9.GPIOC-14初始化:主程序设计,将每一个灯 ...
- STM32——流水灯
STM32--流水灯 宗旨:技术的学习是有限的,分享的精神是无限的. stm32f10x_conf.h:打开stm32f10x_gpio.h和stm32f10x_rcc.h: stm32f10x_gp ...
- stm32流水灯c语言程序,STM32——流水灯程序
STM32--流水灯 stm32f10x_conf.h:打开stm32f10x_gpio.h和stm32f10x_rcc.h: stm32f10x_gpio.c 和 stm32f10x_rcc.c加入 ...
- multisim13学习_基于Multisim13数字流水灯电路设计与仿真 - 镇江高专学报.PDF
基于Multisim13数字流水灯电路设计与仿真 - 镇江高专学报 第30卷第1期 镇 江 高 专 学 报 Vol.30 No.1 2017年1月 JournalofZhenjiangCollege ...
- 基于汇编和C语言STM32流水灯依次闪烁
目录 一.初始化 1.地址映射和寄存器映射 1.1 总线基地址 1.2 外设基地址 1.3 外设寄存器地址 1.4接线 1.4.1 将串口USB转TTL线与stm32核心板连接如图所示 1.4.2 并 ...
- 基于STM32F103C8T6实现流水灯的操作实验
一.GPIO端口的初始化 1.配置时钟 1.找到时钟使能寄存器映射基地址即复位时钟控制 由于本次实验采用GPIOA.B.C三个端口,该三个端口又都属于APB2总线. 2.找到APB2总线端口偏移地址以 ...
- STM32流水灯程序---2种方式
一.STM32F103系列芯片的地址映射和寄存器映射 STM32寄存器为32位,恰好又有32根地址总线,可访问2^32(4G)的空间,ARM把存储空间分成了8个512MB大小的块.8个区域中,每一块区 ...
- 【原创】基于ARM的流水灯仿真示例
本设计使用的仿真工具是Proteus 7.4,IDE是ADS 1.2,芯片是LPC2134 在Proteus中的电路图如下图所示: 本设计使用的是周立功的LPC2131的工程模板.LPC2131的RA ...
- VHDL||数字系统设计实验--基于VHDL的流水灯电路设计
实验目的: 学习设计一个流水灯电路,并在实验板验证. 学习简单时序电路的设计和硬件测试. 学习使用VHDL语言方法进行逻辑设计输入. 实验内容: 实验VHDL程序: LIBRARY IEEE; USE ...
最新文章
- Pretty Login便携版:Windows 7登录界面修改器
- 为何我的BLOG不能DIY?
- seaborn可视化条形图并按照升序排序条形图进行可视化:Sort Bars in Barplot in Ascending Order in Python
- oracle锁表语句执行提示无法终止当前对话_显示Oracle数据库表或行上持有锁的所有会话...
- 【杂谈】关于数据和模型,初学者极容易忽视的两个问题!
- webService的简单使用
- 【收藏】MySQL出现data too long for column ‘name‘ at row 1 解决
- 风好大,我好冷——个人分工理解
- 第七章 (四)BFS(路径寻找问题)
- linux 五笔输入法下载软件,极点五笔Linux版|极点五笔输入法官方linux版_最火软件站...
- 2022年电工杯数学建模A题思路
- 你想要的宏基因组-微生物组知识全在这(2020.03)
- 令人惊叹的模糊图像复原软件_如何写一封令人惊叹的求职信,以吸引您(包括模板)...
- 建筑CAD基础设计【1】
- 速记JVM内存模型和垃圾回收策略
- 安全管理体系升级 迈动互联获得ISO国际认证
- idea 提示 TKK 更新TKK失败,请检查网络连接,解决办法!
- 云服务器deeplearning_云服务器深度学习服务器环境搭建
- 解决iPhone手机时间格式化“NAN“问题
- Gartner 2020 年 SIEM 魔力象限
热门文章
- 破解缝隙之谜[转载自 http://learning.artech.cn/]
- 【Linux】关于Linux操作系统的基本操作
- 性能测试之JMeter配置元件【HTTP信息头管理器】
- Selenium API-WebElement 方法
- html ajax输出表格中,使用Ajax来渲染HTML表格
- linux中关于ssh实验,操作系统实验三linux的telnetftpssh的相关配置及验证
- 云计算开源软件有哪些?
- web前端的易错点和冷知识,新人必看!
- 面向对象编程:包,继承,多态,抽象类,接口
- php判断目录是否有写的权限,PHP版目录权限检测