中断控制—寄存器点灯实验

主函数:

#include "sys.h"
#include "delay.h"
#include "led.h" 
#include "exti.h" 	 

int main(void)
{					   
	Clock_Init(9);	
    delay_init(72);	   	 	
	LED_Init();		  		

	EXTIX_Init();         	 
	LED0=0;					
	while(1)
	{	    
		  
	}	 
}

LED函数:

#include "led.h"

void LED_Init(void)
{
	
	//Enable B   E 
	RCC->APB2ENR|=1<<3;       	 
	RCC->APB2ENR|=1<<6;   
	   	 
	
	//B
	GPIOB->CRL&=0XFF0FFFFF; 
	GPIOB->CRL|=0X00300000;  	 
    GPIOB->ODR|=1<<5;      //high level
				


//E
	
	GPIOE->CRL&=0XFF0FFFFF;
	GPIOE->CRL|=0X00300000;
	GPIOE->ODR|=1<<5;      //high level
}

中断模块

 

#include "exti.h"
#include "delay.h" 
#include "led.h" 
#include "key.h"




void EXTI3_IRQHandler(void)
{
	delay_ms(10);
	if(KEY1==0)	 	
	{				 
		LED1=!LED1;
	}		 
	EXTI->PR=1<<3;   
}

void EXTI4_IRQHandler(void)
{
	delay_ms(10);	
	if(KEY0==0)	 	
	{
		LED0=!LED0;
		LED1=!LED1;
	}		 
	EXTI->PR=1<<4;   
}		   

void EXTIX_Init(void)
{
	KEY_Init();

	Ex_NVIC_Config(GPIO_E,3,FTIR); 	
 	Ex_NVIC_Config(GPIO_E,4,FTIR); 	
	MY_NVIC_Init(2,1,EXTI3_IRQn,2);		   
	MY_NVIC_Init(2,0,EXTI4_IRQn,2);		   
}












按键模块

								    

void KEY_Init(void)
{
	RCC->APB2ENR|=1<<2;    
	RCC->APB2ENR|=1<<6;    
	GPIOA->CRL&=0XFFFFFFF0;	  
	GPIOA->CRL|=0X00000008; 
	  
	GPIOE->CRL&=0XFFF000FF;	 
	GPIOE->CRL|=0X00088800; 				   
	GPIOE->ODR|=7<<2;	  
} 


u8 KEY_Scan(u8 mode)
{	 
	static u8 key_up=1;
	if(mode)key_up=1;    
	if(key_up&&(KEY0==0||KEY1==0))
	{
		delay_ms(10);
		key_up=0;
		if(KEY0==0)return 1;
		else if(KEY1==0)return 2;
	
		
	}else if(KEY0==1&&KEY1==1)key_up=1; 	    
 	return 0;
}

时钟配置

void Clock_Init(u8 PLL)
{
	unsigned char temp=0;   
	MYRCC_DeInit();		  
 	RCC->CR|=0x00010000;  
	while(!(RCC->CR>>17));
	RCC->CFGR=0X00000400;
	PLL-=2;				 
	RCC->CFGR|=PLL<<18;   
	RCC->CFGR|=1<<16;	 
	FLASH->ACR|=0x32;	
	RCC->CR|=0x01000000;  
	while(!(RCC->CR>>25));
	RCC->CFGR|=0x00000002;	 
	while(temp!=0x02)     
	{   
		temp=RCC->CFGR>>2;
		temp&=0x03;
	}    
}

                                                                           

         天水师范学院科技园信息技术服务工作室 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值