|
本帖最后由 zhou__mi 于 2020-6-22 19:06 编辑
程序代码:
//Pass at PROTEUS 8.7,ZhouMi,1881003@qq.com,20181118,11:52
//实验内容和现象:
//(1)配置完整RCC,使能GPIOC、GPIOE和AFIO的时钟的时钟;
//(2)配置NVIC:优先组NVIC_PriorityGroup_1为1,占先式PreemptionPriority为0,副优先SubPriority为0;
//(3)设置端口位PA5(联接KEY1)为GPIO_Mode_IN_FLOATING、PC6(联接LED1)为GPIO_Mode_Out_PP 50MHz;
//(4)LCD显示实验信息,没有学习LCD之前,请忽略;
//(5)配置EXTI:与PA5联接的KEY1中断为EXTI_Line5。
//(6)在stm32f10x_it.c里,配置EXTI9_5_IRQHandler,发生中断时将PC6输出取反驱动LED1指示中断发生了。
//(7)下载运行程序,按下KEY1触发中断EXTI_Line5,LED1指示中断发生了。
// 说明:程序源于STM3210E-EVAL,请看本project的readme.txt
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* File Name : main.c
* Author : MCD Application Team
* Version : V2.0.1
* Date : 06/13/2008
* Description : Main program body
********************************************************************************
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_lib.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
static vu32 TimingDelay = 0;
EXTI_InitTypeDef EXTI_InitStructure;
ErrorStatus HSEStartUpStatus;
/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void SysTick_Config(void);
void Delay(u32 nCount);
void Decrement_TimingDelay(void);
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name : main
* Description : Main program.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
int main(void)
{
#ifdef DEBUG
debug();
#endif
/* System Clocks Configuration */
RCC_Configuration(); //(1)调用RCC设置函数
/* NVIC configuration */
NVIC_Configuration(); //(2)调用NVIC设置函数
/* Configure the GPIO ports */
GPIO_Configuration(); //(3)调用GPIO设置函数
/* Connect KEY1 Button EXTI Line to Key Button GPIO Pin */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5); //(4)PA5设置为EXTI5
/* Configure KEY1 Button EXTI Line to generate an interrupt on falling edge */
EXTI_InitStructure.EXTI_Line = EXTI_Line5; //EXTI中断线是EXTI_Line5
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //EXTI中断模式是中断(另外一种是事件)
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //EXTI触发方式是下降沿
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使用EXTI
EXTI_Init(&EXTI_InitStructure); //(5)初始化EXTI
/* Generate software interrupt: simulate a falling edge applied on KEY1 Button EXTI line */
EXTI_GenerateSWInterrupt(EXTI_Line5); //产生一个软件中断
while (1) //等待中断发生
{
}
}
/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
工程见附件
|
|