《stm32单片机考试复习(共15页).docx》由会员分享,可在线阅读,更多相关《stm32单片机考试复习(共15页).docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上一、 填空题。1. 公司的F4系列芯片采用了_内核,其分为两个系列。其中STM32F407 系列的运行频率为_。2. 所有的IO端口都有外部中断功能,当使用外部中断时候,IO引脚必须设置为_模式。3. 程序存储器、数据存储器、寄存器和I/O端口排列在同一个线性(即地址连续)的 _地址空间内。4. 定时器的时基单元包括 _,_ 和自动重载寄存器。5. 串口数据帧由_,数据位,奇偶校验位,停止位组成。6. GPIO端口的位可以配置为多种模式,有输入模式,输出模式,_和_。7. CM4内核支持 256 个中断,其中包含了 _个内核中断和_ 个外部中断。8. ADC转换模式分
2、为_ 和_ 。9. 程序存储器、数据存储器、寄存器和 I/O 端口排列在同一个线性(即地址连续)的 _ 地址空间内。10. 定时器的时基单元包括 _ , _ 和自动重载寄存器。11. 串口数据帧由_,数据位,奇偶校验位,停止位组成。12. GPIO端口的位可以配置为多种模式,有输入模式,输出模式,_ 和_ 。13. 公司的F4系列芯片采用了_ 内核,其分为两个系列。 其中STM32F407 系列的运行频率为_ 。14. 当定时器使用GPIO引脚实现输出比较产生PWM, IO引脚必须设置为_ 模式。15. 程序存储器、数据存储器、寄存器和 I/O 端口排列在同一个线性(即地址连续)的 _ 地址空
3、间内。16. I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:_ ,结束信号和_ 。17. 串口数据帧由_ ,数据位,奇偶校验位,停止位组成。18. GPIO端口的位可以配置为多种模式,有输入模式,输出模式,_ 和_ 。19. STM32F407内部集成了_个DAC。20. STM32F407芯片有 _ 个定时器。21. ADC转换模式分为_ 和_ 。 22. DAC采用12位转换能达到的转换精度是 _ 。23. I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:_ ,结束信号和_ 。24.GPIO端口的位可以配置为多种模式,有输入模式,输出模式,_ 和_ 。二、 选择题
4、1. 下列哪种方法可以对进行程序下载 【 】A. ST_Link B. J_ Link C. 在线应用编程 D. 以上都可以2. 哪些不是的ADC系统的特点 【 】A. 4-位分辨率 B. 自校准C. 可编程数据对齐 D. 单次和连续转换模式3. STM32嵌套向量中断控制器(NVIC) 具有多少个可编程的优先等级 【 】A. 16 B.43 C.72 D.364. 以下不属于串行通信方式的接口是 【 】A. SPI B. UART C. IIC D. 8080接口5. 表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义的关键字是 【 】A. extern
5、B. static C. define D. typedef6、STM32F407ZET6芯片共有多少个引脚。 【 】A112 B. 72 C. 144 D. 176 7. STM32F407系统时钟SYSCLK来源不包括 【 】 A .HSE B.HSI C.PLLCLK D.LSI8. 每个 IO 引脚都有一个复用器,该复用器采用多少路复用功能输入。 【 】 A8 B. 16 C. 32 D. 4 9. 以下不属于串行通信方式的接口是 【 】 ASPI B.UART C.IIC D. 8080接口 10. 表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定
6、义的关键字是 【 】 Aextern B. static C.define D.typedef11. STM32F407ZET6芯片FLASH容量是 【 】 A.256K B.512K C.1M D.2M 12.定时器的时基单元不包括 【 】 A.自动重载寄存器 B.定时器计数器C.预分频寄存器 D.溢出寄存器13. F407共有多少个GPIO引脚。 【 】 A.112 B.176 C.144 D.7214. 以下不属于IIC 接口的特点是 【 】 A 串行通信 B. 半双工 C. 异步传输 D. 2线式总线 15. STM32F767内部集成温度传感器的输出连接到ADC的通道上。 【 】 A
7、通道18 B.通道16 C. 通道4 D. 通道516.STM32F407ZET6芯片共有多少个IO口。 【 】 A112 B. 72 C. 144 D. 176 17. STM32F407系统时钟SYSCLK来源不包括 【 】 A HSE B.HSI C.PLLCLK D. LSI18. STM32F767 的 ADC 是 12 位逐次逼近型的模数转换器,它有 多少个通道。 【 】A8 B. 16 C. 19 D. 4 19.串口接口是几线的串行通信总线。 【 】 A1 B. 2 C.4 D.8 20. 定义结构体的类型别名和枚举类型的关键字是 【 】 A extern B. static
8、C. define D. typedef三、简答题1. 简述不同复用功能的重映射过程。 2. 简述的USART的功能特点。 3. 简述时钟的类型。4. IIC总线的组成?画出IIC总线工作时序图,并说明总线数据传输过程。5. 说明外部按键扫描方式和外部线中断方式的差异。6. 请说明使用基于HAL库的编程方式处理ADC的步骤。7. 简述GPIO端口四种模式的区别。8. 简述查询方式和中断方式在ADC的区别。9. 简述STM32F407时钟系统的来源构成及多个时钟源的作用。10. 简述定时器输出比较输出PWM的原理。11. 请说明使用基于HAL库的编程方式使用DAC的步骤。四、程序阅读题1. 阅读
9、下列程序,在空格填上正确注释。void IIC_Start(void)SDA_OUT(); /_IIC_SDA=1; IIC_SCL=1;delay_us(4); IIC_SDA=0; /_ delay_us(4);IIC_SCL=0; /_ void IIC_Stop(void)SDA_OUT();IIC_SCL=0;IIC_SDA=0; /_ delay_us(4);IIC_SCL=1; IIC_SDA=1; /_delay_us(4); 2. 阅读下列程序,完成程序填空,并说明程序功能。u8 KEY_Scan(u8 mode) _ u8 key_up=1; /按键松开标志 if(mode
10、=1) _ ; /支持连按 if(key_up&(KEY0=0|KEY1=0|KEY2=0|WK_UP=1) delay_ms(10); key_up=0; if(KEY0=0) return KEY0_PRES; else if(KEY1=0) return KEY1_PRES; else if(KEY2=0) return KEY2_PRES; else if(WK_UP=1) return WKUP_PRES; else if( _ ) key_up=1; return 0; /无按键按下程序实现的功能?3. 找出下列程序中错误,并改正。void MY_ADC_Init(void) AD
11、C1_Handler.Instance=ADC1; ADC1_Handler.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4; ADC1_Handler.Init.Resolution=ADC_RESOLUTION_4B; ADC1_Handler.Init.DataAlign=ADC_DATAALIGN_RIGHT; ADC1_Handler.Init.ScanConvMode=DISABLE; ADC1_Handler.Init.EOCSelection=DISABLE; ADC1_Handler.Init.ContinuousConvMode=D
12、ISABLE; ADC1_Handler.Init.NbrOfConversion=1; ADC1_Handler.Init.DiscontinuousConvMode=DISABLE; ADC1_Handler.Init.NbrOfDiscConversion=0; ADC1_Handler.Init.ExternalTrigConv=ADC_SOFTWARE_START; ADC1_Handler.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE; ADC1_Handler.Init.DMAContinuousRequests=
13、DISABLE; HAL_ADC_Init(&ADC1_Handler); void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) GPIO_InitTypeDef GPIO_Initure; _HAL_RCC_ADC2_CLK_ENABLE(); _HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_Initure.Pin=GPIO_PIN_5; GPIO_Initure.Mode=GPIO_MODE_OUTPUT; GPIO_Initure.Pull=GPIO_PULLUP; HAL_GPIO_Init(GPIOA,&GPIO_Initur
14、e);4. 阅读下列程序,在空格填上正确注释。int main(void)u8 key_num=0; HAL_Init(); /_Stm32_Clock_Init(432,25,2,9); /_delay_init(216); /_ Led_Init(); Digitron_Init();Key_Init(); /_while (1)key_num=KEY_Scan(0x01); /_switch (key_num)case 1: LED0(0); LED1(1);break;case 2: LED0(0); LED1(0);break;case 3: LED0(1); LED1(1);bre
15、ak;case 4: LED0(1); LED1(0);break;5阅读下列程序,完成程序填空,并说明程序功能。u8 KEY_Scan(u8 mode) static u8 key_up=1; if(mode=1)key_up=1; if( _ ) delay_ms(10); key_up=0; if(Key0=0) return 1; if(Key1=0) return 2; if(Key2=0) return 3; if(Wk_Up=1) return 4; else if (Key0=1&Key1=1&Key2=1&Wk_Up=0) _ ; _ ; 程序实现了什么功能?6.找出下列程序
16、中错误,并改正。#include digitron.h#include delay.hu8 Posture_Code=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;u8 Segment_Code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,0xff;void Digitron_Init(void) GPIO_InitTypeDef GPIO_Initure; _HAL_RCC_GPIOF_CLK_ENABLE(); GPIO_
17、Initure.Pin=GPIO_PIN_8 | GPIO_PIN_6 | GPIO_PIN_7; GPIO_Initure.Mode=GPIO_MODE_INPUT_PP; GPIO_Initure.Pull=GPIO_PULLUP; GPIO_Initure.Speed=GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOC,&GPIO_Initure);void HC595_Transport_Byte(u8 dat) /实现一个字节数据的输出 u8 i,temp; for(i=0;i=1; void Disp_Digitron(u8 *posture,u8 *disp
18、ture) u8 i; for(i=0;i8;i+) HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_SET);delay_ms(5);HC595_Transport_Byte(posturei);HC595_Transport_Byte(Segment_Codedispturei);HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_RESET);delay_us(5); 7.阅读下列程序,在空格填上正确注释void LED_Init(void) GPIO_InitTypeDef GPIO_Initure;
19、/_ _HAL_RCC_GPIOC_CLK_ENABLE(); /_ GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; /_ GPIO_Initure.Pull=GPIO_PULLUP; /_ GPIO_Initure.Speed=GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOC,&GPIO_Initure);HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);/_ HAL_GPIO_WritePin(GPIOC,GP
20、IO_PIN_1,GPIO_PIN_SET);8.阅读下列程序,完成程序填空,并说明程序功能void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p) u8 x0=x;width+=x;height+=y; while(*p= )/判断是不是非法字符! if( _ ) x=x0;y+=size; if( _ ) break;/退出 LCD_ShowChar(x,y,*p,size,0); x+=size/2; _ ; 程序(函数)实现的功能?9.找出下列程序中错误,并改正。 void HAL_UART_RxCpltCa
21、llback(UART_HandleTypeDef *huart)if(huart-Instance=USART1)if(USART_RX_STA & 0x8000)=0)if(USART_RX_STA&0x4000)if(aRxBuffer0=0x0a)USART_RX_STA=0; else USART_RX_STA =0x8000; else if(aRxBuffer0!=0x0d)USART_RX_STA|=0x4000;elseUSART_RX_BUFUSART_RX_STA&0X3FFF=aRxBuffer0 ;USART_RX_STA+; if(USART_RX_STA(USAR
22、T_REC_LEN-1)USART_RX_STA=0; 10. 阅读下列程序,在空格填上正确注释。u8 KEY_Scan(u8 mode) static u8 key_up=1; /_ if(mode=1) key_up=1; /_ if(key_up&(KEY0=0|KEY1=0|KEY2=0|WK_UP=1) delay_ms(10); key_up=0; /_ if(KEY0=0) return KEY0_PRES; else if(KEY1=0) return KEY1_PRES; else if(KEY2=0) return KEY2_PRES; else if(WK_UP=1) r
23、eturn WKUP_PRES; else if(KEY0=1&KEY1=1&KEY2=1&WK_UP=0) key_up=1; /_ return 0; /_11. 阅读下列程序,完成程序填空,并说明程序功能。void LED_Init(void) GPIO_InitTypeDef _ ; _HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; GPIO_Initure.Pull=GPIO_PULLUP; GPIO_Initure.S
24、peed=GPIO_SPEED_HIGH; HAL_GPIO_Init( _ ); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);/PB0置1,默认初始化后灯灭 HAL_GPIO_WritePin( _ );/PB1置1,默认初始化后灯灭程序(函数)实现的功能?12. 找出下列程序中错误,并改正。void IIC_Start(void)SDA_OUT(); IIC_SDA(1); IIC_SCL(0);delay_us(4); IIC_SDA(0);delay_us(4);IIC_SCL(1); void IIC_Stop(void)SDA_
25、OUT();IIC_SCL(0);IIC_SDA(1); delay_us(4);IIC_SCL(1); IIC_SDA(0);delay_us(4); /产生ACK应答void IIC_Ack(void)IIC_SCL(0);SDA_OUT();IIC_SDA(1);delay_us(2);IIC_SCL(1);delay_us(2);IIC_SCL(0);五、 程序设计题。1. 使用DAC的通道1,通过外部引脚PA4输出模拟信号。要求写出完整的MspInit()函数。 2. 设计程序,使用定时器在PA2端口输出f=2HZ,q=2/3的方波。 3. 下列程序是DAC的初始化函数,请写出完整的
26、MspInit 函数。#include dac.hDAC_HandleTypeDef DAC1_Handler; /DAC句柄/初始化DACvoid DAC1_Init(void) DAC_ChannelConfTypeDef DACCH1_Config; DAC1_Handler.Instance=DAC;HAL_DAC_Init(&DAC1_Handler); /初始化DAC DACCH1_Config.DAC_Trigger=DAC_TRIGGER_NONE; /不使用触发功能DACCH1_Config.DAC_OutputBuffer=DAC_OUTPUTBUFFER_DISABLE;
27、/DAC1输出缓冲关闭HAL_DAC_ConfigChannel(&DAC1_Handler,&DACCH1_Config,DAC_CHANNEL_1);/DAC通道1配置HAL_DAC_Start(&DAC1_Handler,DAC_CHANNEL_1); /开启DAC通道1void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac) 4设计程序,使用定时器TIMER2的通道CHANNEL_3输出PWM,要求实现定时器的初始化、PWM输出控制函数及将主程序填写完整。#include sys.h#include delay.h#include usart.h#in
28、clude led.h#include timer.hint main(void) u8 dir=1; u16 led0pwmval=0; HAL_Init(); Stm32_Clock_Init(336,2,8,7); delay_init(168); uart_init(); . while(1). 5.编程驱动74HC595,在数码管上显示自己的学号。6 设计程序,使用定时器TIMER2在PA3端口输出f=1HZ,q=3/5的方波。7. 下列程序是DAC的初始化函数,请写出完整的MspInit 函数。void uart_init(u32 bound)UART1_Handler.Insta
29、nce=USART1; UART1_Handler.Init.BaudRate=bound; UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B; UART1_Handler.Init.StopBits=UART_STOPBITS_1;UART1_Handler.Init.Parity=UART_PARITY_NONE; UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; UART1_Handler.Init.Mode=UART_MODE_TX_RX; HAL_UART_Init(&UART1_Han
30、dler);HAL_UART_Init();HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);void HAL_UART_MspInit(UART_HandleTypeDef *huart)8设计程序,使用定时器TIMER5的通道CHANNEL_1实现输入捕获,要求实现定时器的初始化、输入捕获的中断函数和中断回调函数及将主程序填写完整。#include sys.h#include delay.h#include usart.h#include led.h#include timer.hextern u8 TIM
31、5CH1_CAPTURE_STA;/输入捕获状态 extern u32TIM5CH1_CAPTURE_VAL;/输入捕获值 int main(void) long long temp=0; HAL_Init(); /初始化HAL库 Stm32_Clock_Init(336,8,2,7); /设置时钟,168Mhz delay_init(168); /初始化延时函数 uart_init(); /初始化USART . . while(1) . . . 7 画图题。1 请画出IIC总线时序图,并简要说明。 2 请画出定时器输出PWM波的原理示意图,并简要说明。 3、画出定时器输入捕获的原理示意图,并简要说明。 4、画出串传输数据帧格式,并简要说明? 5、画出系统时钟树示意图,说明系统时钟来源。 专心-专注-专业