物联网控制系统STM32复习重点(2023)

简答题

1.嵌入式技术系统的特点?(嵌入式系统和通用计算机有什么相同点和不同点)

相同点:

嵌入式系统和通用计算机都是基于计算机技术的系统,使用CPU、存储器、操作系统等基本组件。

它们都可以运行软件程序,执行指令并处理数据。

不同点:

嵌入式系统的硬件和软件通常是为特定应用而设计的,与特定设备或任务紧密结合。而通用计算机的硬件和软件设计更加通用化,适用于广泛的应用。

嵌入式系统通常需要满足实时性要求,对外部事件的响应时间有严格要求。而通用计算机通常更注重处理复杂的计算和大规模数据处理。

嵌入式系统的资源通常比较受限,包括计算能力、存储空间和功耗等。通用计算机则通常拥有更强大的计算能力和存储能力。

嵌入式系统的应用领域比较特定,如工业控制、汽车电子、医疗设备等。通用计算机则广泛应用于个人计算机、服务器、互联网等领域。

2.中断优先级位的分组有哪几种方式?

NVIC_PriorityGroup_0:抢占优先级0位,子优先级4位,此时不会发生中断嵌套。

NVIC_PriorityGroup_l:抢占优先级1位,子优先级3位。

NVIC_PriorityGroup_2:抢占优先级2位,子优先级2位。

NVIC_PriorityGroup_3:抢占优先级3位,子优先级1位。

NVIC_PriorityGroup_4:抢占优先级4位,子优先级0位。

3.外部中断配置

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);//配置外部中断线
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);//初始化EXTI

uint32_t EXTI_Line;//外部中断线(0~18)    
EXTIMode_TypeDef EXTI_Mode;  //外部中断方式(中断、事件)
EXTITrigger_TypeDef EXTI_Trigger; //外部中断触发(上升沿、下降沿、双边沿)
FunctionalState EXTI_LineCmd;//外部中断使能(ENABLE or DISABLE)

4.数据通信方式分类,要写出每一个分类的特点

①根据数据通讯的方向,通讯又分为全双工、半双工及单工通讯

全双工:在同一时刻,两个设备之间可以同时收发数据

半双工:两个设备之间可以收发数据,但不能在同一时刻进行

单工:在任何时刻都只能进行一个方向的通讯,即一个固定为发送设备,另一个固定为接收设备

②按数据传送方式,可分为串行通信与并行通信

串行通信:通信线路简单,降低成本,适用于远距离通信,但传输速度慢

并行通信:传输速度块,适用于短距离通信

③根据通讯的数据同步方式,可分为同步和异步通信

同步通信:设备复杂、对时钟稳定性要求高、效率高

异步通信:设备简单、易实现、按字传信息、效率低

5.通用定时器TIM常用的工作模式是什么(6种)

计数模式 输出比较模式 输入捕获模式 PWM输出模式 PWM输入模式 单脉冲模式

6.局部代码,分析代码功能(以发送一个字符串为例,怎么发送字符串)

void Usart_SendString(USART_TypeDef *pUSARTx, char *str) {
    
    
    unsigned int k = 0;
    do {
    
    
        Usart_SendByte(pUSARTx, *(str + k));
        k++;
    } while (*(str + k) != '\0');
    /* 等待发送完成 */
    while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET) {
    
    
    }
}

Usart_SendString函数用来发送一个字符串,它调用了Usart_SendByte 函数发送每个字符,直到遇到空字符才停止发送。最后使用循环检测发送完成的事件标志TC来实现保证数据发送完成后才退出函数。

7.stm32系列处理器使用的内核是什么? 目前市场上主流的控制芯片以及应用场景有哪些

内核:ARM Cortex-M

应用场景:新能源、信息通讯设备、交通运输、电子信息设备、家电领域、智能电网产业、医学领域

8.STM32f103系列芯片的通用定时器分别有几个独立通道

4个独立通道: 输入捕获、输出比较、PWM生成、单脉冲模式

9.Stm32系列芯片的主时钟频率是多少

72MHz

10.使用固件库函数开发的好处

简化开发流程:提供了一系列封装好的API,可以方便地访问STM32微控制器的各种功能和外设。

快速原型设计:提供了丰富的功能和外设支持,如GPIO控制、定时器、UART、SPI、I2C等等。通过使用这些库函数,开发人员可以快速地搭建原型系统,验证其功能和性能。

提高代码可读性:STM32固件库函数是为STM32微控制器量身定制的,具有良好的可读性和一致的命名规范。使用这些库函数可以使代码更加清晰易读,降低了开发人员之间的沟通成本,也方便了后续代码的维护和修改。

提高代码可移植性:库函数是针对STM32系列微控制器的,所以在不同的STM32芯片上可以方便地重用代码,而不用担心硬件差异的问题,可以提高代码的可移植性。

分析计算

1.给一个STM32F103存储器的结构映射图

(1)指出哪里是Code区,哪里是代码区,哪里是片上sram区,片上外设区,片外外设区,片外系统区等,并且每个区的地址范围,存储大小都要写上,画一个方框图STM32是有外挂的低速和高速的设备,低速与高速以时钟频率为主,36MHZ,72 MHZ

image-20230618210621168

(2)AHB高速总线时钟,时钟频率是多少?

72MHz

(3)会调用AHB高速时钟总线函数(使能或禁止):

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)

2.(1)数据校验的方式有几种(5种)

奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)

(2)给一串数据,要能够指出哪个是偶校验,哪个是奇校验等数据帧的格式:

image-20230618211747399

(3)一个串行通信,给出数据帧结构,传送速率,要发送一个1kb(1kb=1024Bytes,1Byte=8Bit)的文件,求发送时间?

看第五题的(2)

3.分析,给一个DMA功能图表

(1)DMA有几大部分组成

DMA模块由AHB从设备、仲裁器和若干个通道等部分组成。

(2)DMA有几个通道,当多个通道过来,用哪一块来响应?

DMA具有12个独立可编程的通道,其中DMA1有7个通道,DMA2有5个通道,每个通道对应不同的外设的DMA请求。

当多个通道过来,用仲裁器管理先后响应处理的顺序。

(3)数据发送方向有哪些? 最大传输数据大小(65535)

传输方向:从外设到存储器,从存储器到外设,从存储器到存储器。

最大传输数据大小:65535

4.一个微控制器的最小系统是指能使微控制器正常工作所需要的少量元件

(1)分析stm32最小应用系统结构

通常由 STM32 微控制芯片、电源电路、时钟电路、复位电路、调试和下载 电路等部分组成

(2) USART1,SPI1,GPIOA,TIM1分别使用的时钟源

USART1,SPI1,GPIOA都使用APB2总线时钟作为其时钟源,APB2总线时钟通常由系统时钟(SYSCLK)通过预分频器分频得到

TIM1可使用的时钟源有:内部时钟源(HSI)、外部时钟源、系统时钟

(3) 写上四个片上外设时钟使能函数的函数名

USART1:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

SPI1:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

GPIOA:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

TIM1:RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

5.假设 STM32F103 微控制器的 USART 设置为 38.410ps,7位数据位,一位偶校验位,2位停止位,此时想要发送一个大小1kb的文件,请回答

(1)一个字符帧发送需要哪三个部分

起始位+数据帧+停止位

(2)此次发送文件需要多少时间

这个题老师给的题目应该有问题,应该是38.4kbps

image-20230618215621779

(3)stm32库函数操作USART DR寄存器读取串口接收到数据的函数是什么?判断数据发送是否完成的函数是什么

uint16_t USART_ReceiveData(USART_TypeDef* USARTx)

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)

6.模拟数字转换器,其功能是将模拟信号转化为数字信号,以便于微控制器进行数据处理,回答问题

(1) STM32中的ADC一共有多少通道 交换通道可分为哪两种?

18;规则通道和注入通道

(2) STM32F103的ADC能测量的模拟信号VIN的范围?

(负极参考电压)VREF-<=VIN<=VREF+(正极参考电压)

(3) 当ADCLK为14MNz时,采样时间送取1.5个ADC时钟周期,那么此时ADC的最短转换时间是多少?

ADC的转换时间跟ADC的输入时钟和采样时间有关,公式为TCONV=采样时间+ 12.5个周期。

当ADCLK=14MHZ,采样时间设置为1.5周期,那么总的转换时间可得,

TCONV=1.5周期+ 12.5周期=14周期=1μs

综合应用

1.基于STMF103系列芯片,利用定时器1输出1000Hz的PWM方波。配置不同的占空比可以使LED发出不同的亮;定时路2定时每20ms中断一次,实现LED的渐明渐暗效果。部分代码如下:

void Tim2Init(void)

NVIC_InitTypeDef NVIC_Initstructure;
TIM_TimeBaselnitTypeDer TIM_TimeBaseStructure;
/*优先级分组*/
NYIC_PriorityGroupConfig (NVIC_PriorityGroup_0);
/*TIM2中断优先级设定*/
NVIC_Initstructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_Initstructure.NVIC_IRQChannelSubPriority = 3;
NVIC_Initstructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/*开启TIM2时钟*/
RCC_APBIPeriphClockCmd (RCC_APB1Periph_TIM2, ENABLE);
TIM_Delnit(TTM2);//TIM2设为默认方式
-------------//自动重装载寄存器周期的值(计数值)
------------//时钟预分频数72
-----------//时钟4分频,TM CKD_DTV4
-----------//向上计数模式,TIM_ CounterMode_Up
TIM_TimeBaselnit(TIM2,&TIM_TimeBaseStructure);
----------//清除溢出中断标志,TIM FLAG_Update
TIM_ITConfg(TIM2, TIM_IT_Update, ENABLE);//使能中断
-----------//开启TIM2

提示:参照时基初始化结构体变量。清除定时器中断标志位的函数为void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); 定时器使能函数为void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

附:时基初始化结构体变量

typedef struct
{
    
    
  uint16_t TIM_Prescaler; //PSC预分配器的值
  uint16_t TIM_CounterMode;   //计时器模式
  uint16_t TIM_Period; //ARR自动重装器的值
  uint16_t TIM_ClockDivision;  //指定时钟分频
  uint8_t TIM_RepetitionCounter; 重复计数器的值,高级定时器使用
} TIM_TimeBaseInitTypeDef;  

回答下列问题:

(1)什么是PWM波?介绍一种PWM的应用场景。

PWM简称脉宽调制,是一种在电子领域中常用的调制技术,用于控制模拟信号的幅度。它基于改变信号的脉冲宽度来实现对信号的调制。

应用场景:控制电机速度。通过改变PWM信号的占空比,可以调整电机输入电压的平均值,从而改变电机的转速。高占空比意味着输入电压的平均值更高,电机转速更快;低占空比则意味着输入电压的平均值较低,电机转速较慢。这种方式可以用于调节电机的转速,使其适应不同的应用需求。

(2)除了向上计数模式,STM32通用定时器TIM2的16位计数器还可以采用哪些方式工作?

向下计数模式、中央对齐模式(向上/向下计数)

(3)补全上述代码。

TIM_TimeBaseInitStructure.TIM_Period = 5000 - 1;//自动重装载寄存器周期的值(计数值)
TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1;//时钟预分频数72
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV4;//时钟4分频,TM CKD_DTV4
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//计数器模式	

TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除溢出中断标志,TIM FLAG_Update

TIM_Cmd(TIM2,ENABLE);//开启TIM2

2.利用STM32点亮LED灯,LED按固定时间一直闪烁 部分代码如下:(以下问题不需要查看给的代码)

请回答下列问题:(14分)

(1)在查看 《STM32数据手册》 中的GPIO的表格时,会看到有“FT”一列,这是什么意思?

有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着不兼容5V 。

(2) STM32F103ZET6芯片GPIO口支持三种最大翻转速度,分别是什么?

GPIO_Speed_10MHz ,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz

(3) STM32F103的GPIO端口一共可分为哪几种输入状态?

①上拉输入②下拉输入③浮空输入④模拟输入

(4)函数LED0_ Config()的作用为打开GPIOA端口的时钟、配置PA8为推挽输出以及物出速率为50MHZ,请写出该函数代码。

void LED0_Config(void)
{
    
    
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOA, GPIO_Pin_8);
}

おすすめ

転載: blog.csdn.net/qq_61228493/article/details/131454825