开发板上4个LED是接到STM32的4个IO口上的,要点亮LED,只要在这4个IO上输出对应的高电平 那如何让STM32在PF6~PF9这4个IO上输出高点平呢 首先要看下《STM32F10xxx参考手册CD00171190.pdf》里关于IO端口的介绍,第8

你程序写的有问题,一开始按钮拿那两个端口要是高电平,二极管那2个按钮要是低电平。按下按钮,接地变成低电平,给二极管高电平导通。

等到执行到 while(!ReadValue);//等待按键被放开 这条指令时 数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新

2:led2=!led2;delay_ms(200);break;default:break;} void 在这里按键获取函数(void){ key=获取到的值;//没有按键按下的话是进入不到这里 } } }

当按键按下时,是否会进入你的if,如果不能,那么同上,用万用表量一下io口的电平。按道理讲,应该不会有问题的。除非硬件焊接有问题。建议把K1定义拿出去,和temp放在一起,当然应该不会有太大影响。最后一点,看一下

需要先开启时钟线、设置端口输入还是输出模式,速度模式,以及初始化是高还是低状态,等设置好这些了,它就是一个51单片机一样的功能了。

奋斗stm32 v5开发版按键控制led的问题

LOOP2 SETB 01H CLR 00HLOOP2: JB 01H,LOOP3 JB 00H,LOOP4 SJMP MAINLOOP3: MOV P0,A RR A LCALL DELAY SJMP LOOPLOOP4: MOV P0,A RL A LCALL DELAY SJMP LOOP

使用GPIO功能前,首先要初始化系统,最简单的方法为:添加stm32f10x_rcc.c,打开stm32f10x_conf.h 在第41行将/* #include "stm32f10x_rcc.h""*/两边注释符去掉,在main函数中添加代码SystemInit();添加stm32f10x_

void 在这里按键获取函数(void){ key=获取到的值; //没有按键按下的话是进入不到这里 } } }

可以用一个按键改变流水灯的流动方向,用一个位变量做方向标志位,流水灯在每次输出时,根据标志位的状态决定流动方向。而每一次按键,对标志位取反一次,也就改变一次流水灯的方向。仿真图如下,P1口接8个LED灯为流水灯。

主要应用到的外设有定时器,GPIO就能够实现流水灯的效果。用定时器做1s的定时中断,在中断程序中进行GPIO 输出高低电平的切换就可以了。

首先要看下《STM32F10xxx参考手册CD00171190.pdf》里关于IO端口的介绍,第8章 通用和复用功能I/O(GPIO和AFIO)百为STM3210E-EVAL开发板上的CPU是STM32F103ZET6,有GPIOA~GPIOG七组IO,每组IO有16个引脚GPIO_Pin_0~

stm32开发板怎么用按键控制流水灯

1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极

4、定义LED类 在本文默认大家掌握了用C语言开发STM32流水灯的知识,直接描述C++代码内容。本文讲述一个很基础的例子"LED灯",比如创建一个main.cpp源代码文件。首先,定义一个LED类:class LED_Class{ 然后定义私有成员(

你好,上述程序可以满足你说的要求,按键按下抬起的操作可以触发一次 GPIO Pin_1 的状态的读取,你的程序其实就是将此口的状态反转。读取之后用了一个if else 的判断,其实这四行可以直接用一句取反的函数代替,估计是叫in

等到执行到 while(!ReadValue);//等待按键被放开 这条指令时 数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新

include "sys.h"#include "usart.h"#include "delay.h"#include "led.h" #include "key.h" //°´¼ü´¦Àíº¯Êý//·µ»Ø°´&

先定义对应LED 的控制端口#define LED PAout(0)然后LED=~LED;

如何编写STM32控制LED反转C程序

思路:     控制吧个LED灯,使用上拉方式控制,引脚高电平灯灭,引脚低电平灯亮。     这吧个LED使用同一P口上的所有引脚,假设为P一口中的P一.0-P一.漆共吧个脚。    

4、咖啡桌带有一颗WS2812BLED灯、用于检测物体的红外接近传感器和用于通过定制的Android应用程序控制颜色的HC-05蓝牙模块。让我们首先仔细看看LED灯条。它由5050型RGBLED灯组成,其中集成了非常紧凑的WS2812BLED驱动器IC。5、

在软件结构设计中,加入使用LED8,则需要在PD7口不断的输出高电平和低电平。首先需要初始化系统时钟,然后再开始配置PD7作为输出使用,打开外设时钟最后控制PD7输出持续的高低轮流。开始 -> 配置系统时钟 -> 配置PD7作为输出在

首先实现LED灯的点亮和熄灭,控制连接LED灯的管脚输出高低电平就可以实现。如果电流比较大可以增加三极管驱动电路。10秒定时可以用定时器实现,设置一个1秒的定时器。上电点亮LED灯,并开始计时,10秒时间到熄灭LED就可以了。

STM32程序:按键长按和短按的判断,用来控制LED灯,有借鉴了其他程序,但是有细节上的不同。短按是切换灯亮的状态,每按一下换一个状态,长按led灯快闪并且指示灯向4靠近,直到等于4是慢闪。如果只做长短按不需要注重

1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极连

然后D3小时与常数比较,比如D3大于等于19(即晚上7点)Y0输出,并且D3小于5,Y0输出,这样就是晚7点到次日5点之间,Y0输出。比如夜灯。望采纳。。。

stm32怎样控制led灯?

不会有影响啊,K1,K2,K3按键,分别控制LED1,LED2,LED3;定义一个状态标志变量,识别短按、长按1S,3S,5S的4种状态,只需对每个按键的状态标志进行判断,执行状态标志下的各功能。

1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极

2、选择3个端口作为输出端口连接LED灯(高电平点亮还是低电平点亮要看你电路设计)对应为LED1、LED2、LED3。编程思路:1、初始设置一个抢答键按下与否的位标志变量:bit flag = 0;(没有抢答按键按下flag = 0,有抢答

4个单片机I/O口如何实现3个按键控制3个LED灯;按键跟灯一一对应,按键按下相应的LED亮,再按一次,LED灭。见下图:

keyp3.11: jb p3.1,keyp3.2 ;如果p3.0 为高,则灭掉p2.1 setb p2.1 ;点亮 p2.1 ajmp keyp3.22 keyp3.2: clr p2.1 ;灭掉 p2.1 keyp3.22: jb p3.0,keyp3.0

delay_ms(200);break;case 1: LED1=!LED1;delay_ms(200);break;case 2:LED2=!LED2;delay_ms(200);break;default:break;} void 在这里按键获取函数(void){ key=获取到的值; //没有按键按下的话是进入不到

单片机STM32求助用3个按键控制3个LED灯

keyp3.0: clr p2.2 ;灭掉 p2.2 keyp3.00: jb p3.0,keyp3.1 ;如果p3.0 为高,则灭掉p2.0 setb p2.0 ;点亮 p2.0 ajmp keyp3.11 keyp3.1: clr p2.0 ;灭掉 p2.0 keyp3.11: jb p3.1,keyp3.2 ;如果p3.0 为高,则灭掉p2.1 setb p2.1 ;点亮 p2.1 ajmp keyp3.22 keyp3.2: clr p2.1 ;灭掉 p2.1 keyp3.22: jb p3.0,keyp3.0 ;如果p3.0 为高,则灭掉p2.2 setb p2.2 ;点亮 p2.2 ajmp keyp3.00 简单的谢了一下,你就当学习用吧; 你的电路设计不合理,按键和led都需要上拉,才可正常; 满意的话赞一个,呵呵
#include typedef unsigned int UINT16;typedef unsigned char UCHAR;/************************************************************///½Ó¿Ú¶¨Òåsbit K1 = P1^0;sbit K2 = P1^1;sbit K3 = P1^2;sbit LED1 = P2^0;sbit LED2 = P2^1;sbit LED3 = P2^2;/***********************************************************///ÑÓʱº¯Êý///////***********************************************************/void Delay(UINT16 ui16Dly){ UINT16 i,j; for (i = ui16Dly; i > 0; i--); for (j = 110; j > 0; j--);}/***********************************************************///°´¼üɨÃè///////***********************************************************/UINT16 Key_Scan(void){ UINT16 ui16Key; ui16Key = 0x00; ui16Key |= (K1 == 0) ? 0x01 : 0; ui16Key |= (K2 == 0) ? 0x02 : 0; ui16Key |= (K3 == 0) ? 0x04 : 0; return (ui16Key);}/***********************************************************///LED¹Ø///////***********************************************************/void Led_Off(void){ LED1 = 1; LED2 = 1; LED3 = 1;}/***********************************************************///LEDָʾ///////***********************************************************/void Led_Flg(UINT16 ui16Flg){ switch (ui16Flg) { case 0: //K1 LED1 = 0; break; case 1: LED2 = 0; //K2 break; case 2: //K3 LED2 = 1; LED3 = 0; break; case 3: //K2 LED3 = 1; break; case 4: //K1 LED2 = 1; LED3 = 1; break; case 5: //K1 LED1 = 1; LED2 = 1; LED3 = 1; break; default : LED1 = 1; LED2 = 1; LED3 = 1; break; }}static UINT16 ui16Cnt[3];static UINT16 ui16Flg;/***********************************************************///Ö÷º¯Êý///////***********************************************************/void main(void){ UINT16 ui16Key,ui16Temp; ui16Cnt[0] = 0; ui16Cnt[1] = 0; ui16Cnt[2] = 0; ui16Flg = 0x00; Led_Off(); ui16Key = Key_Scan(); ui16Flg = 0xff; while (1) { //°´¼ü ui16Temp = Key_Scan(); if (ui16Key != ui16Temp) { Delay(5); ui16Temp = Key_Scan(); if (ui16Key != ui16Temp) { ui16Key = ui16Temp; } } //K1 if (ui16Temp & 0x01) { switch (ui16Cnt[0]) { case 0: ui16Flg = 0; break; case 1: ui16Flg = 4; break; case 2: ui16Flg = 5; break; } while (ui16Temp & 0x01) ui16Temp = Key_Scan(); ui16Cnt[0]++; if (ui16Cnt[0] > 2) ui16Cnt[0] = 0; } //K2 if (ui16Temp & 0x02) { if (ui16Cnt[1] > 0) ui16Flg = 3; else ui16Flg = 1; while (ui16Temp & 0x02) ui16Temp = Key_Scan(); ui16Cnt[1]++; if (ui16Cnt[1] > 1) ui16Cnt[1] = 0; } //K3 if (ui16Temp & 0x04) { ui16Flg = 2; while (ui16Temp & 0x04) ui16Temp = Key_Scan(); } //LED Led_Flg(ui16Flg); }}
int onoff = 1; //点亮 int count = 5000; while(true) { LED = onoff; //先点亮 count = 5000; while(count) ; //空跑CPU,为了占用时间,留出反转时间 onoff = !onoff; //LED反转 }
有问题的那个程序 u8 ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10); 只在上面那条指令采集了一次按键数据。 等到执行到 while(!ReadValue);//等待按键被放开 这条指令时 数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新读取按键状态,像正确的程序那样用这样的指令 while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10));//等待按键被放开 另外因为你只读取了一次按键状态,所以下面那么多一堆软件消除抖动的程序白写了。 综上,正确的程序在每个判断的时刻都要重新读取下按键状态。
主要应用到的外设有定时器,GPIO就能够实现流水灯的效果。用定时器做1s的定时中断,在中断程序中进行GPIO 输出高低电平的切换就可以了。
主要应用到的外设有定时器,GPIO就能够实现流水灯的效果。用定时器做1s的定时中断,在中断程序中进行GPIO 输出高低电平的切换就可以了。