ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:22.50KB ,
资源ID:11952676      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11952676.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32期末考试答案详解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32期末考试答案详解.docx

1、STM32期末考试答案详解简述嵌套向量中断控制器(NVIC)的主要特性。答:STM32的嵌套向量中断控制器(NVIC) 管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现低延迟的中断处理,并有效地处理晚到的中断。STM32嵌套向量中断控制器(NVIC)的主要特性如下:q 具有43 个可屏蔽中断通道(不包含16 个Cortex-M3 的中断线)。 q 具有16 个可编程的优先等级。 q 可实现低延迟的异常和中断处理。 q 具有电源管理控制。 q 系统控制寄存器的实现。1简述STM32的ADC系统的功能特性。答:STM32的ADC系统的主要功能特性包括如下几个方面

2、:ADC开关控制、ADC时钟、ADC通道选择、ADC的转换模式、中断、模拟看门狗、ADC的扫描模式、ADC的注入通道管理、间断模式、ADC的校准模式、ADC的数据对齐、可编程的通道采样时间、外部触发转换、DMA请求、双ADC模式和温度传感器。2简述STM32的双ADC工作模式。答:在有两个ADC的STM32器件中,可以使用双ADC模式。在双ADC模式里,根据ADC_CR1寄存器中DUALMOD2:0位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同时触发。双ADC工作模式主要包括如下几种:同时注入模式、同时规则模式、快速交替模式、慢速交替模式、交替触发模式和独立模式。1简述ST

3、M32的USART的功能特点。、答:STM32的USART为通用同步异步收发器,其可以与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART还可以利用分数波特率发生器提供宽范围的波特率选择。STM32的USART支持同步单向通信和半双工单线通信。同时,其也支持LIN(局部互连网),智能卡协议和IrDA(红外数据)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。STM32还具备多处理器通信能力。另外,通过多缓冲器配置的DMA方式,还可以实现高速数据通信。1简述STM32的高级控制定时器TIM1的结构。答:STM32提供了一个高级控制定时器(TIM1)。TI

4、M1由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。TIM1适合多种用途,包含测量输入信号的脉冲宽度,或者产生输出波形。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制定时器TIM1和通用控制定时器TIMx是完全独立的,它们不共享任何资源,因此可以同步操作。2简述STM32时钟的类型。答:STM32提供了三种不同的时钟源,其都可被用来驱动系统时钟SYSCLK,这三种时钟源分别为:q HSI振荡器时 q HSE振荡器时钟 q PLL时钟这三种时钟源还可以有以下2种二级时钟源:q 32kHz低速内部RC,可以用于驱动独立看门狗

5、和RTC。其中,RTC用于从停机/待机模式下自动唤醒系统。q 32.768kHz低速外部晶振也可用来驱动RTC(RTCCLK)。任一个时钟源都可被独立地启动或关闭,这样可以通过关闭不使用的时钟源来优化整个系统的功耗。1简述DMA控制器的基本功能。答:STM32的DMA 控制器有7个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA 请求的优先权。DMA 控制器和Cortex-M3 核共享系统数据线执行直接存储器数据传输。因此,1 个DMA请求占用至少2 个周期的CPU 访问系统总线时间。为了保证Cortex-M3 核的代码执行的最小带宽,DMA 控

6、制器总是在2 个连续的DMA 请求间释放系统时钟至少1 个周期。NVIC和外部中断:配置中断0(LED绿灯闪1次),中断1(LED蓝灯闪2次),中断2三个中断(LED绿灯闪3次),执行顺序为0-1-2。(默认中断0闪烁的是绿灯)按下按键,绿灯闪(一亮一灭)1次,蓝灯闪2次,然后绿灯闪3次,中断结束。#include stm32l1xx.h#include stdio.h#include discover_board.h#include stm32l_discovery_lcd.h#include stdarg.h/* Private function prototypes -*/void RC

7、C_Configuration(void);void Init_GPIOs (void);void Delay(uint32_t nTime);void USART_Configuration(void);void EXTI_Configuration(void);void NVIC_Configuration(void);static volatile uint32_t TimingDelay;int main(void) /* Configure Clocks for Application need */ RCC_Configuration(); SysTick_Config(16000

8、000/ 2000); NVIC_Configuration(); /* Init I/O ports */ Init_GPIOs(); USART_Configuration(); EXTI_Configuration();/ printf(rnWelcome !rn); while(1) / Delay(20); / printf(rnWelcome !rn); void RCC_Configuration(void) RCC_DeInit(); /* Enable HSI Clock */ RCC_HSICmd(ENABLE); /*! Wait till HSI is ready */

9、 while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) = RESET) /* RCC_PLLCmd(DISABLE); RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_3,RCC_PLLDiv_2); RCC_PLLCmd(ENABLE); */ /*! Wait till PLL is ready */ / while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) / / RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); RCC_SYSCLKC

10、onfig(RCC_SYSCLKSource_HSI); RCC_MSIRangeConfig(RCC_MSIRange_6); RCC_HSEConfig(RCC_HSE_OFF); if(RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET ) while(1); /* Enable comparator clock LCD and PWR mngt */ /RCC_APB1PeriphClockCmd(RCC_APB1Periph_LCD | RCC_APB1Periph_PWR, ENABLE); /* Enable ADC clock & SYSCF

11、G */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_SYSCFG | RCC_APB2Periph_USART1 , ENABLE);void Init_GPIOs (void) GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOs clock */ RCC_AHBPeriphClockCmd(LD_GPIO_PORT_CLK|USERBUTTON_GPIO_CLK, ENABLE); /* Configure User Button pin as input */

12、 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;/USERBUTTON_GPIO_PIN GPIO_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); /* Configure the

13、GPIO_LED pins LD3 & 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_GP

14、IO_PORT, &GPIO_InitStructure); /GPIO_LOW(LD_GPIO_PORT, LD_GREEN_GPIO_PIN); /GPIO_LOW(LD_GPIO_PORT, LD_BLUE_GPIO_PIN); /*Configure the USART1_GPIO_PORT */ /* Connect PA9 to USART1_Tx */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); /* Connect PA10 to USART1_Rx*/ GPIO_PinAFConfig(GPIOA, GP

15、IO_PinSource10, GPIO_AF_USART1); /* Configure USART1_Tx and USART1_Rx as alternate function */ 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_In

16、itStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Enable all GPIOs clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH, ENABLE); void USART_Configuration(void) U

17、SART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_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_InitSt

18、ructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(USART1,&USART_InitStructure); USART_ClockIni.USART_Clock = USART_Clock_Disable; USART_ClockIni.USART_CPOL = USART_CPOL_Low; USART_ClockIni.USART_CPHA = USART

19、_CPHA_2Edge; USART_ClockIni.USART_LastBit = USART_LastBit_Disable; USART_ClockInit(USART1,&USART_ClockIni); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_Cmd(USART1,ENABLE)void EXTI_Configuration() EXTI_InitTypeDef EXTI_InitStructure; /定义PA0,PA1,PA2为外部中断输入通道/ SYSCFG_EXTILineConfig(EXTI_PortSo

20、urceGPIOA,EXTI_PinSource0); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource2); /* Configure EXT1 Line 0 1 2 in interrupt mode trigged on Falling edge */ EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1|EXTI_Line2 ; / PA0 for

21、User button EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);void NVIC_Configuration() NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM /C/C+ CompilerPreprocess

22、orDefined symbolsVECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); /RAM #else /VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);/Flash #endif / NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Enable and set EXTI0 Interrupt to the lowest priority */ NVIC_InitStructure.NVIC_IRQChann

23、el = EXTI0_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptio

24、nPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority

25、= 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); void Delay(uint32_t nTime) TimingDelay = nTime; while(TimingDelay != 0);void TimingDelay_Decrement(void) if (TimingDelay != 0x00) TimingDelay-; int fputc(int ch,FILE *f) USART_SendData(USART1,(unsigned char)ch); whi

26、le(USART_GetFlagStatus(USART1,USART_FLAG_TC)=RESET); return ch;#include stm32l1xx_it.h#include main.hvoid NMI_Handler(void)void HardFault_Handler(void) /* Go to infinite loop when Hard Fault exception occurs */ while (1) void MemManage_Handler(void) /* Go to infinite loop when Memory Manage exceptio

27、n occurs */ while (1) void BusFault_Handler(void)/* Go to infinite loop when Bus Fault exception occurs */ while (1) void UsageFault_Handler(void) /* Go to infinite loop when Usage Fault exception occurs */ while (1) void SVC_Handler(void)void DebugMon_Handler(void)void PendSV_Handler(void)void SysT

28、ick_Handler(void) TimingDelay_Decrement();void DMA1_Channel1_IRQHandler (void)void RTC_WKUP_IRQHandler(void)void EXTI0_IRQHandler(void) int i; GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+) EXTI_GenerateSWInterrup

29、t(EXTI_Line1); EXTI_ClearFlag(EXTI_Line0);void EXTI1_IRQHandler(void) int i; GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT

30、,LD_BLUE_GPIO_PIN ); for(i=0;i500000;i+) EXTI_GenerateSWInterrupt(EXTI_Line2); EXTI_ClearFlag(EXTI_Line1);void EXTI2_IRQHandler(void) int i; GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+) GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i500000;i+)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1