【单片机原理及应用日志】两个LED灯,一个一直在闪,另一个用开关控制亮灭

Proteus仿真工程合并

MDK工程合并

Proteus仿真工程合并

右击Proteus图标选择属性->兼容性->以兼容性运行这个程序->确定

选择这个是防止后面报错,具体原因不明

将工程4中的【单片机原理及应用日志】两个LED灯,一个一直在闪,另一个用开关控制亮灭_第1张图片

 剪切复制到工程2.反过来也行。最终电路图如下:

【单片机原理及应用日志】两个LED灯,一个一直在闪,另一个用开关控制亮灭_第2张图片

 

MDK工程合并

工程2是用按键控制灯的亮灭,工程4是LED灯的闪烁。我选择将2合进4

先打开2,观察main函数中的内容

int main(void)
{  
	u8 temp;
	LED_Init();							//³õʼ»¯
	KEY_Init();							//³õʼ»¯
	while(1)
		{	temp = KEY1; 				//ÔÝ´æ°´¼üÖµ(²¼¶ûÐÍ)	£¬ÎÞ°´¼ü·À¶¶´¦Àí
			LED1 = temp;	}			//½«»ñÈ¡µÄ¼üÖµ ¸øLED1¸³Öµ
}

MDK的中文出来是乱码,问题不大

函数内第一行是定义,需要放在工程4初始化之后,不然会报错

第二行是LED初始化,先点进去把这个函数内的串口从GPIOB改成GPIOA。然后发现工程4中也有LED初始化,为了防止混淆,要么重新改一下2中初始化的函数名,要么直接加在工程4的函数中。

第三行是按键初始化,这个函数是工程4没有的,所以可以直接加到工程4中,并加上声明。

第五行:KEY1也是工程4中没有的,因此把KEY1的宏定义一同加到工程4中。

第六行:LED1是工程4中有的,因此需要先改名,再添加到工程4中,一同添加的还有LED相关函数及其声明

修改后:

/************************************************
20230103  »ùÓÚSTM32R6·¶Àý  PROTEUS
TIME3ÖÐ¶Ï ¶¨Ê± LED·´×ª
************************************************/

#include "stm32f10x.h"
#include "delay.h"					//*¶¨ÒåÓÐÑÓʱº¯Êý£¬À´×Ô..\3 CBT6(led)\STYSTEM\delay\		*
#include "led.h"						//¶¨ÒåÓÐGPIO³õʼ»­º¯Êý£¬Óк궨ÒåLED1
#include "timer.h"
#define KEY1	PAin(7)			//¶¨Òåºê  KEY1
void KEY_Init(void);			//IO³õʼ»¯
#define LED2 PAout(12)
void LED_Init1(void);		//³õʼ»¯

int main(void)
{
	u8 temp;
	SystemInit();
	RCC_ClockSecuritySystemCmd(ENABLE);
	LED_Init();							//GPIO³õʼ»¯
	
	
	LED_Init1();							//³õʼ»¯
	KEY_Init();							//³õʼ»¯
	
		
//	TIM3_Int_Init(4999,7199);			//ÍâƵ8M, ¼ÆÊý¾«¶È0.1mS£¬1ÃëÒç³öÒ»´Î
//	TIM3_Int_Init(499,7199);		//ÍâƵ8M, ¼ÆÊý¾«¶È0.1mS£¬0.1ÃëÒç³öÒ»´Î   ʵÎï¼ÆËãÖµ
//	TIM3_Int_Init(1,7199);				//¼ÆÊý¾«¶È1.8mS     PROTEUS ·ÂÕæ 8M      KEIL 8M
//	TIM3_Int_Init(1,3959);				// ¼ÆÊý¾«¶È0.1mS  500usÒç³ö    PROTEUS ·ÂÕæ 16M     KEIL 8M
				// ¼ÆÊý¾«¶È0.9mS    PROTEUS ·ÂÕæ 16M     KEIL 8M//	TIM3_Int_Init(1,7199);
	TIM3_Int_Init(499,7199);				//PROTEUS ·ÂÕæ8M   ½üËÆ1s  ¶¨Ê±¹¦ÄÜ   ¾«¶È²»¿ÉÒÔ

	while(1)
		{	temp = KEY1; 				//ÔÝ´æ°´¼üÖµ(²¼¶ûÐÍ)	£¬ÎÞ°´¼ü·À¶¶´¦Àí
			LED2 = temp;	}			//½«»ñÈ¡µÄ¼üÖµ ¸øLED1¸³Öµ
		
	//while(1)
	//{	}
}

//°´¼ü³õʼ»¯º¯Êý
void KEY_Init(void) //IO³õʼ»¯
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//ʹÄÜPB¶Ë¿ÚʱÖÓ
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7;							//GPIOB.7
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 					//ÉèÖóÉÉÏÀ­ÊäÈë
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 		//IO¿ÚËÙ¶ÈΪ50MHz
	
 	GPIO_Init(GPIOA, &GPIO_InitStructure);    							//³õʼ»¯GPIOB7
	
}

最后将hex文件加入单片机即可。hex文件路径为:..\4 TIME3(LED)\R6(COM)\OBJ\time3.hex

你可能感兴趣的:(单片机原理及应用日志,单片机,嵌入式硬件)