1/14简述嵌套向量中断控制器(NVIC)的主要特性。答:STM32的嵌套向量中断控制器(NVIC)管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现低延迟的中断处理,并有效地处理晚到的中断。STM32嵌套向量中断控制器(NVIC)的主要特性如下:q具有43个可屏蔽中断通道(不包含16个Cortex-M3的中断线)。q具有16个可编程的优先等级。q可实现低延迟的异常和中断处理。q具有电源管理控制。q系统控制寄存器的实现。1.简述STM32的ADC系统的功能特性。答:STM32的ADC系统的主要功能特性包括如下几个方面:ADC开关控制、ADC时钟、ADC通道选择、ADC的转换模式、中断、模拟看门狗、ADC的扫描模式、ADC的注入通道管理、间断模式、ADC的校准模式、ADC的数据对齐、可编程的通道采样时间、外部触发转换、DMA请求、双ADC模式和温度传感器。2.简述STM32的双ADC工作模式。答:在有两个ADC的STM32器件中,可以使用双ADC模式。在双ADC模式里,根据ADC_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同时触发。双ADC工作模式主要包括如下几种:同时注入模式、同时规则模式、快速交替模式、慢速交替模式、交替触发模式和独立模式。1.简述STM32的USART的功能特点。、答:STM32的USART为通用同步异步收发器,其可以与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART还可以利用分数波特率发生器提供宽范围的波特率选择。STM32的USART支持同步单向通信和半双工单线通信。同时,其也支持LIN(局部互连网),智能卡协议和IrDA(红外数据)SIRENDEC规范,以及调制解调器(CTS/RTS)操作。STM32还具备多处理器通信能力。另外,通过多缓冲器配置的DMA方式,还可以实现高速数据通信。1.简述STM32的高级控制定时器TIM1的结构。答:STM32提供了一个高级控制定时器(TIM1)。TIM1由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。TIM1适合多种用途,包含测量输入信号的脉冲宽度,或者产生输出波形。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制定时器TIM1和通用控制定时器TIMx是完全独立的,它们不共享任何资源,因此可以同步操作。2.简述STM32时钟的类型。答:STM32提供了三种不同的时钟源,其都可被用来驱动系统时钟SYSCLK,这三种时钟源分别为:qHSI振荡器时qHSE振荡器时钟qPLL时钟这三种时钟源还可以有以下2种二级时钟源:q32kHz低速内部RC,可以用于驱动独立看门狗和RTC。其中,RTC用于从停机/待机模式下自动唤醒系统。q32.768kHz低速外部晶振也可用来驱动RTC(RTCCLK)。任一个时钟源都可被独立地启动或关闭,这样可以通过关闭不使用的时钟源来优化整个系统的功耗。1.简述DMA控制器的基本功能。答:STM32的DMA控制器有7个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。DMA控制器和Cortex-M3核共享系统数据线执行直接存储器数据传输。因此,1个DMA请求占用至少2个周期的CPU访问系统总线时间。为了保证Cortex-M3核的代码执行的最小带宽,DMA控制器总是在2个连续的DMA请求间释放系统时钟至少1个周期。NVIC和外部中断:配置中断0(LED绿灯闪1次),中断1(LED蓝灯闪2次),中断2三个中断(LED绿灯闪3次),执行顺序为0--1--2。(默认中断0闪烁的是绿灯)按下按键,绿灯闪(一亮一灭)1次,蓝灯闪2次,然后绿灯闪3次,2/14中断结束。#includestm32l1xx.h#includestdio.h#includediscover_board.h#includestm32l_discovery_lcd.h#includestdarg.h/*Privatefunctionprototypes-----------------------------------------------*/voidRCC_Configuration(void);voidInit_GPIOs(void);voidDelay(uint32_tnTime);voidUSART_Configuration(void);voidEXTI_Configuration(void);voidNVIC_Configuration(void);staticvolatileuint32_tTimingDelay;intmain(void){/*ConfigureClocksforApplicationneed*/RCC_Configuration();SysTick_Config(16000000/2000);NVIC_Configuration();/*InitI/Oports*/Init_GPIOs();USART_Configuration();EXTI_Configuration();//printf(\r\nWelcome!!!\r\n);while(1){//Delay(20);//printf(\r\nWelcome!!!\r\n);}}voidRCC_Configuration(void){RCC_DeInit();/*EnableHSIClock*/RCC_HSICmd(ENABLE);/*!WaittillHSIisready*/while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET){}/*RCC_PLLCmd(DISABLE);RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_3,RCC_PLLDiv_2);RCC_PLLCmd(ENABLE);*//*!WaittillPLLisready*///while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//{}//RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);3/14RCC_MSIRangeConfig(RCC_MSIRange_6);RCC_HSEConfig(RCC_HSE_OFF);if(RCC_GetFlagStatus(RCC_FLAG_HSERDY)!=RESET){while(1);}/*EnablecomparatorclockLCDandPWRmngt*///RCC_APB1PeriphClockCmd(RCC_APB1Periph_LCD|RCC_APB1Periph_PWR,ENABLE);/*EnableADCclock&SYSCFG*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_SYSCFG|RCC_APB2Periph_USART1,ENABLE);}voidInit_GPIOs(void){GPIO_InitTypeDefGPIO_InitStructure;/*EnableGPIOsclock*/RCC_AHBPeriphClockCmd(LD_GPIO_PORT_CLK|USERBUTTON_GPIO_CLK,ENABLE);/*ConfigureUserButtonpinasinput*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;//USERBUTTON_GPIO_PINGPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;GPIO_Init(USERBUTTON_GPIO_PORT,&GPIO_InitStructure);/*ConfiguretheGPIO_LEDpinsLD3&LD4*/GPIO_InitStructure.GPIO_Pin=LD_GREEN_GPIO_PIN|LD_BLUE_GPIO_PIN;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Init(LD_GPIO_PORT,&GPIO_InitStructure);//GPIO_LOW(LD_GPIO_PORT,LD_GREEN_GPIO_PIN);//GPIO_LOW(LD_GPIO_PORT,LD_BLUE_GPIO_PIN);/*ConfiguretheUSART1_GPIO_PORT*//*ConnectPA9toUSART1_Tx*/GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);/*ConnectPA10toUSART1_Rx*/GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);/*ConfigureUSART1_TxandUSART1_Rxasalternatefunction*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_40MHz;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOA,&GPIO_InitStructure);/*EnableallGPIOsclock*/RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|4/14RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOD|RCC_AHBPeriph_GPIOE|RCC_AHBPeriph_GPIOH,ENABLE);}voidUSART_Configuration(void){USART_InitTypeDefUSART_InitStructure;USART_ClockInitTypeDefUSART_ClockIni;USART_InitStructure.USART_BaudRate=9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_InitStructure.USART_HardwareFlowControl=USART_Hardwar