新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2017-11-17
- 在线时间
- 5 小时
|
#include"stm32f10x.h"
#include"stdio.h"
#include"delay.h"
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
_sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);
USART1->DR = (u8) ch;
return ch;
}
#endif
#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)
#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
void EXTI_LIYA()
{
GPIO_InitTypeDef GPIO_InitTypeDefStruture;
EXTI_InitTypeDef EXTI_InitTypeDefStruture;
NVIC_InitTypeDef NVIC_InitTypeDefStruture;
GPIO_InitTypeDefStruture.GPIO_Mode=GPIO_Mode_IPD;
GPIO_InitTypeDefStruture.GPIO_Pin=GPIO_Pin_0;
GPIO_InitTypeDefStruture.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitTypeDefStruture);
GPIO_InitTypeDefStruture.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitTypeDefStruture.GPIO_Pin=GPIO_Pin_3;
GPIO_Init(GPIOE,&GPIO_InitTypeDefStruture);
GPIO_InitTypeDefStruture.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitTypeDefStruture.GPIO_Pin=GPIO_Pin_4;
GPIO_Init(GPIOE,&GPIO_InitTypeDefStruture);
////////////////////////////////////////////////////////////////////////////////////
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
EXTI_InitTypeDefStruture.EXTI_Line=EXTI_Line4;
EXTI_InitTypeDefStruture.EXTI_LineCmd=ENABLE;
EXTI_InitTypeDefStruture.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitTypeDefStruture.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitTypeDefStruture);
EXTI_InitTypeDefStruture.EXTI_Line=EXTI_Line3;
EXTI_InitTypeDefStruture.EXTI_LineCmd=ENABLE;
EXTI_InitTypeDefStruture.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitTypeDefStruture);
EXTI_InitTypeDefStruture.EXTI_Line=EXTI_Line0;
EXTI_InitTypeDefStruture.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_Init(&EXTI_InitTypeDefStruture);
NVIC_InitTypeDefStruture.NVIC_IRQChannel=EXTI0_IRQn;
NVIC_InitTypeDefStruture.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitTypeDefStruture.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitTypeDefStruture.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitTypeDefStruture);
NVIC_InitTypeDefStruture.NVIC_IRQChannel=EXTI3_IRQn;
NVIC_InitTypeDefStruture.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitTypeDefStruture.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitTypeDefStruture.NVIC_IRQChannelSubPriority=0;
NVIC_Init(&NVIC_InitTypeDefStruture);
NVIC_InitTypeDefStruture.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_InitTypeDefStruture.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitTypeDefStruture.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitTypeDefStruture.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitTypeDefStruture);
}
void USART_Init_LIYA()
{
GPIO_InitTypeDef GPIO_InitTypeDefStruture;
USART_InitTypeDef USART_InitTypeDefStruture;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
////////////////////////////////////////////////////////////////////////////
GPIO_InitTypeDefStruture.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitTypeDefStruture.GPIO_Pin=GPIO_Pin_9;
GPIO_InitTypeDefStruture.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitTypeDefStruture);
//////////////////////////////////////////////////////////////////////
GPIO_InitTypeDefStruture.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitTypeDefStruture.GPIO_Pin=GPIO_Pin_10;
GPIO_InitTypeDefStruture.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitTypeDefStruture);
//////////////////////////////////////////////////////////////////////
USART_InitTypeDefStruture.USART_BaudRate=115200;
USART_InitTypeDefStruture.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitTypeDefStruture.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_InitTypeDefStruture.USART_Parity=USART_Parity_No;
USART_InitTypeDefStruture.USART_StopBits=USART_StopBits_1;
USART_InitTypeDefStruture.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitTypeDefStruture);
USART_Cmd(USART1,ENABLE);
///////////////////////////////////////////////////////////////////////
}
void EXTI0_IRQHandler(void)
{
delay_ms(10);
if(WK_UP==1)
{
printf("\r\n\r\n某某某\r\n\r\n");
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
void EXTI3_IRQHandler()
{
delay_ms(10);
if(KEY1==0)
{
printf("\r\n\r\n你是大傻逼\r\n\r\n");
}
EXTI_ClearITPendingBit(EXTI_Line3);
}
void EXTI4_IRQHandler()
{
delay_ms(10);
if(KEY0==0)
{
printf("\r\n\r\n你就是大傻逼");
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
int main()
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
USART_Init_LIYA();
EXTI_LIYA();
while(1);
}
|
|