版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式原理与应用集成电路学院
嵌入式课程组STM32通用定时器项目55.1STM32通用定时器概述01STM32定时器简介02通用定时器了解STM32定时器的种类和用法。掌握STM32通用定时器的计数模式。了解STM32通用定时器的内部结构和时钟选择。理解定时器初始化的计算公式。任务内容:任务要求:STM32定时器简介01STM32定时器简介定时器是STM32系列单片机中的重要组成部分之一,STM32系列单片机拥有多个系列和型号,不同系列和型号的单片机可能具有不同数量和类型的定时器。比如STM32F7系列单片机通常具有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM6、TIM7)。常用STM32单片机拥有定时器个数如下表。型号引脚个数最高时钟频率存储器容量通用定时器个数高级定时器个数基本定时器个数STM32F103C84872M64K310STM32F103RB6472M128K310STM32F103RC6472M256K232STM32F103V810072M64K310STM32F103VC10072M256K232STM32F103ZE14472M512K232STM32定时器简介三种定时器的区别定时器定时器位数计数模式产生DMA捕获/比较通道互补输出应用场景高级定时器(TIM1,TIM8)16向上、向下、中央对齐允许4有带死区控制盒紧急刹车,可应用于PWM电机控制通用定时器(TIM2,TIM3,TIM4,TIM5)16向上、向下、中央对齐允许4无通用。定时计数,PWM输出,输入捕获,输出比较基本定时器(TIM6,TIM7)16向上、向下、中央对齐允许0无主要应用于驱动DAC通用定时器02通用定时器一、通用定时器的功能、特点STM32的通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器(CNT)构成。STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。通用定时器通用定时器TIMx具有4个独立通道(TIMx_CH1-TIMx_CH4),这些通道可以用于不同的功能,例如PWM输出、捕获输入、比较等。每个通道可以单独配置,并且可以同时执行不同的任务。通常情况下,通道的功能如下:TIMx_CH1:通道1,可以用于输出PWM波形,也可以用于输入捕获。TIMx_CH2:通道2,同样可以用于输出PWM波形或者输入捕获。TIMx_CH3:通道3,与前两个通道类似,可以用于PWM输出或输入捕获。
TIMx_CH4:通道4,具有相同的功能,可以用于PWM输出或输入捕获。通用定时器STM32单片机的通用定时器有6个独立的IRQ/DMA请求生成器事件,当发生以下事件时产生中断/DMA:
更新事件(UpdateEvent):计数器溢出并重新装载时产生更新事件。捕获/比较事件(Capture/CompareEvent):当捕获/比较寄存器(CCR)中的值与定时器
的计数器相匹配时产生捕获/比较事件。触发事件(TriggerEvent):当由定时器的输入触发信号(TRGI)引发的触发事件发生时产
生中断或DMA请求。捕获/比较中断(Capture/CompareInterrupt):当捕获/比较事件发生时产生中断。更新中断(UpdateInterrupt):当更新事件发生时产生中断。触发中断(TriggerInterrupt):当触发事件发生时产生中断。通用定时器STM32是由意法半导体(STMicroelectronics)推出的一系列32位ARMCortex-M单片机。STM32系列单片机具有丰富的外设和强大的性能。STM32系列单片机广泛应用于工业控制、汽车电子、消费类电子等领域。STM32系列微控制是嵌入式系统设计中的重要组成部分。通用定时器二、定时器的计数模式STM32单片机定时器的计数模式有向上计数、向下计数、中央对齐三种通用定时器三、定时器的内部结构STM32单片机的定时器通常由以下主要部分组成:计数器(Counter)预分频器(Prescaler)自动重装载寄存器(Auto-reloadRegister)输出比较寄存器(OutputCompareRegister)PWM模式控制寄存器(PWMModeControlRegister)时钟选择和使能控制寄存器(ClockSelectionandEnableControlRegister)通用定时器四、定时器的时钟选择STM32定时器的计数器时钟可以由下列四种时钟源提供:内部时钟(CK_INT)外部时钟模式1:外部输入脚(TIx)外部时钟模式2:外部触发输入(ETR)
内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以
配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。通用定时器五、定时器的相关寄存器当使用STM32单片机中的定时器时,常常涉及到三个关键的寄存器:计数器寄存器(TIMx_CNT):预分频器寄存器(TIMx_PSC):自动装载寄存器(TIMx_ARR):这些寄存器共同作用于定时器的计数过程,通过配置合适的计数器值、预分频系数和自动装载值,可以实现各种定时和计数功能,满足不同应用场景的需求。通用定时器六、定时器初始化的计算公式APB1Timerclocks和APB2Timerclocks脉冲需要经过一个定时器专属的预分频器再分频之后才能成为定时器的计数脉冲,预分频系数保存在一个16位的寄存器TIMx_PSC之中,此时TIMx的计数脉冲周期TCNT和APB1Timerclocks及APB2Timerclocks频率fCLK之间的关系是:STM32的定时器都是16位定时器,计数范围为0~65535,使用时可以根据实际需要设定定时器的自动重载寄存器TIMx_ARR。此时TIMx采用向上计数模式的一次溢出时间TOUT计算公式是:5.2STM32定时器应用01EXIT控制电路设计03定时器控制数码管代码设计02STM32CubeMX配置TIMx掌握EXIT控制电路设计。能利用STM32CubeMX配置TIMx。学会定时器控制数码管代码编写。任务内容:任务要求:EXIT控制电路设计01EXIT控制电路设计编程实现图中的数码管从10~0开始倒计时,按键作为外部中断,控制数码管计时的启停。要求:设置定时器定时时间为1S,定时器控制数码管实现10S倒计时,KEY1控制定时器启动、停止。打开Proteus新建工程,并按图所示绘制仿真电路,按键连接PA0,上拉按键。PB0-PB15连接两个共阴数码管,用来显示10S倒计时。STM32CubeMX配置TIMx02STM32CubeMX配置TIMx打开STM32CubeIDE软件,新建一个基于STM32F103C8单片机的“STM32Project”工程,用STM32CubeMX工具配置定时器,打开“Pinout&Configuration”页面,在左侧菜单中找到“Timers”,选择“TIM4”,在右侧的“TIM4ModeandConfiguration”中勾选内部时钟为信号源。STM32CubeMX配置TIMx实现1S定时,PSC=7199,ARR=9999。勾选内部时钟源会弹出“Configuration”设置,进行下图所示配置。STM32CubeMX配置TIMx在中断管理设置中选择2位抢占优先级和2两位响应优先级,并勾选外部中断0“EXTIline0”和定时器“TIM4”的中断使能,并如图所示设置两个中断的抢占优先级和响应优先级。定时器控制数码管代码设计03定时器控制数码管代码设计STM32CubeMX创建工程文件时,会根据外部中断的配置在“Src”文件夹下的“stm32f1xx_it.c”文件中为引脚PA0和TIM4生成外部中断0和定时器4的中断服务函数“voidEXTI0_IRQHandler(void)”和“voidEXTI1_IRQHandler(void)”,当触发外部中断时或定时器溢出时会自动进入到对应的中断服务函数中。定时器控制数码管代码设计HAL库为每个中断都编写了中断处理函数,进入中断服务函数后会执行对应的中断处理函数,如定时器4的处理函数“HAL_TIM_IRQHandler(&htim4);”HAL库的中断处理函数比较复杂,服务函数中提供了多种中断处理,下表列出了通用定时器的几种中断事件。中断事件解释Capturecompare1~4event定时器的捕获比较通道1~4事件,它可以用于测量定时器计数器的值与捕获寄存器(TIMx_CCRx)的值之间的时间间隔,或者用于产生输出比较信号。Outputcompareevent定时器的输出比较事件,它允许在定时器计数器的值与捕获/比较寄存器(TIMx_CCRx)中设置的比较值相等时,触发特定的操作或者中断处理程序。TIMUpdateevent定时器更新事件,当定时器的计数器溢出并重新加载时,就会触发更新事件。定时器控制数码管代码设计项目中断回调函数代码5.3实战演练-PWM呼吸灯设计01电路设计03编写代码02PWM掌握通过STM32CubeMX初始化PWM的流程。掌握通用定时器实现PWM的代码设计方法。理解呼吸灯的工作原理。任务内容:任务要求:电路设计01电路设计在Proteus中新建基于STM32F103C8的工程,在Proteus左侧模式中找到“虚拟仪器模式”并且找到示波器“OSCILLOSCOPE”,绘制仿真电路图,如图所示,PA6连接LED与示波器。PWM02PWMPWM(脉冲宽度调制)是一种常用的调制技术,用于在数字系统中生成模拟信号。它通过调节信号的脉冲宽度来控制信号的平均功率,通常用于控制电机速度、LED亮度调节、音频合成等应用中。1.基本原理PWM的基本原理是通过在一个固定的周期内改变信号的占空比来控制输出的平均电压或功率。PWM信号由一个周期性的脉冲序列组成,其中脉冲的宽度(高电平持续时间)决定了输出信号的平均功率或电压。PWM2.PWM参数周期(Period):PWM信号的一个完整周期的持续时间,通常以时间单位表示,如微秒(μs)或毫秒(ms)。占空比(DutyCycle):高电平脉冲的持续时间与一个周期的比例,通常以百分比表示。频率(Frequency):PWM信号的周期性重复率,通常以赫兹(Hz)表示,是周期的倒数。分辨率(Resolution):PWM信号的精度,通常表示为脉冲宽度可调节的级别数目。PWM3.应用领域电机控制:用于调节电机速度和方向。LED亮度调节:通过改变LED灯的亮度来实现光线调节。音频合成:用于生成模拟音频信号,如音乐合成和语音合成。电源控制:用于调节开关电源的输出电压和电流。PWM4.优点和应用高效性:PWM技术能够以较高的效率控制输出功率,因为它不像线性调节器那样将多余的功率转化为热量。灵活性:可以通过调节占空比和周期等参数,灵活地控制输出信号的特性。5.PWM在STM32中的应用STM32系列微控制器具有丰富的定时器模块和PWM输出通道,可以方便地生成和控制PWM信号。通过STM32的HAL库或底层驱动程序,可以轻松配置和控制PWM输出。编写代码03编写代码一、初始化PWM打开STM32CubeIDE软件,新建一个基于STM32F103C8单片机的“STM32Project”工程,打开STM32CubeMX选择芯片的PA6引脚,在弹出的GPIO功能选择对话框中选择“TIM3_CH1”。编写代码PA6在本任务中作为定时器“TIM3”的通道1“CH1”,编程通过“TIM3_CH1”输出PWM脉冲信号,控制LED实现呼吸灯效果。通过“TIM3ModeandConfiguration”选择内部时钟,在通道1选择“PWMGenerationCH1”。编写代码PWM参数设置,首先设定定时器的预分配系数PSC和自动重装值ARR分别为“72-1”和“1000-1”,实现定时器1ms的定时。在PWM模式中选择“PWMmode1”在输出极性选择“LOW”。“Mode”选项:PWM模式①PWMmode1:CNT<CCRx时,输出有效电平;当CNT>CCRx时,输出无效电平②PWMmode2:CNT<CCRx时,输出无效电平;当CNT>CCRx时,输出有效电平“CHPolarity”:有效电平①low:通道极性为低电平,也可以说是有效电平为低电平,此时高电平就是无效电平②high:通道极性为高电平,也可以说是有效电平为高电平,此时低电平就是无效电平编写代码将“Mode”选择“PWMmode1”,“CHPolarity”选择low时,当定时器的计数值小于PWM比较值即CNT<CCRx时,输出有效电平,而有效电平为低电平;当CNT>CCRx时,输出无效电平,高电平就是无效电平,就会产生如图所示的电平逻辑。编写代码二、编写代码按要求在STM32CubeMX中完成PWM及时钟配置后,点击“Project”菜单的“GenerateCode”生成代码,会在STM32CubeIDE自动创建工程文件,在“main.c”文件开始编写代码。查询方法实现PWM中断方式实现PWM完整代码见教材编写代码仿真结果5.4实战演练-电子秒表设计01电路设计02编写代码掌握单片机的定时器模块相关知识。掌握中断按键的硬件设计和代码设计方法。任务内容:任务要求:电路设计01电路设计电子秒表是一种常见的计时器设备,本项目设计一个基于STM32单片机和数码管的电子秒表,用于准确测量时间。电子秒表由四位数码管显示,秒表时间范围0~99.99秒。在Proteus中新建基于STM32F103C8的工程,绘制仿真电路图,如图所示,四个共阴动态显示数码管通过两个锁存器连接到STM32F103C8单片机的PB0~PB9接口,数码管从左到右分别显示秒的十位,秒的个位,十分之一秒和百分之一秒。按键“KEY”经过上拉电阻连接PB10。通过外部中断触发实现按键第一次按下控制秒表启动,第二次按下秒表停止,第三次按下秒表复位功能,并反复循环。编写代码02编写代码打开STM32CubeIDE软件,新建一个基于STM32F103C8单片机的“STM32Project”工程,如图所示配置定时器,本项目使用定时器TIM2,最小时间单位是百分之一秒,也就是10ms,所以将PSC设置为“7200-1”,ARR设置为“100-1”。编写代码项目的秒表显示和按键控制都采用了中断方式,配置时设置中断优先级分组为2位抢占优先级2位响应优先级,并且外部中断响应优先级高于定时器中断。编写代码按要求在STM32CubeMX中完成定时器TIM3和GPIO配置后,点击“Project”菜单的“GenerateCode”生成代码,会在STM32CubeIDE自动创建工程文件,在“main.c”文件开始编写代码。完整代码见教材。编写代码在定时器的定时中断回调函数“HAL_TIM_PeriodElapsedCallback”中,首先判断触发中断的定时器实例是否为TIM2。如果是TIM2,则对秒表计数变量num进行累加,并根据计数值更新数码管显示数组dis_num中的数据,实现秒表的计时功能。当num达到10000时,重新置零,实现秒表计时的循环计数。外部中断回调函数“HAL_GPIO_EXTI_Callback”中,首先判断触发中断的引脚是否为GPIO_PIN_10,即是否为按键引脚。如果是按键引脚,则根据按键状态flag的不同值进行不同的操作。当flag为1时,启动TIM2,实现秒表计时功能。当flag为2时,停止TIM2,暂停秒表计时。当flag为3时,重新启动秒表,将计数器num和数码管显示数组dis_num重置为零,实现秒表复位功能。THANKYOU嵌入式原理与应用集成电路学院
嵌入式课程组STM32USART串口通信项目66.1通信概述01通信04STM32单片机优势03串行通信的波特率02串行通信掌握串行通信的制式。掌握串行通信方式。了解串行通信的波特率。。任务内容:任务要求:通信01通信单片机与外部设备之间的信息交换称为通信。通信可以分为并行通信和串行通信。并行通信:多位数据可以同时进行传输,通信速度快;但若通信距离较长,传输线路的成本会随之增加,另外,多位数据在远距离传输中也容易产生信号干扰。因此,并行通信适合短距离的数据通信。串行通信:数据在一根数据信号线上一位一位的进行传输,传输速度较慢,但只需一根数据信号线。串行通信可以节约通信成本,在远距离数据通信中应用十分广泛。串行通信02串行通信1.串行通信的制式串行通信根据数据的传送方向可分为单工、半双工和全双工三种制式。单工:在通信时,只允许数据向一个方向传送。半双工:通信双方都能够收、发数据,但在同一时刻只能向一个方向传送数据。全双工:通信双方都能够收、发数据,而且允许同时双向传送数据。因此,全双工需配置两根传输线。串行通信2.串行通信的方式有同步通信和异步通信两种(1)异步通信异步通信适用于信息量小,随机发送、接收数据的场合。异步通信以帧为单位进行数据传送,一帧信息由起始位、数据位、奇偶校验位和停止位组成。起始位:位于一帧信息的开头,占1位,低电平,标志传送数据的开始。数据位:要传送的数据,紧跟在起始位之后,由低位到高位依次传送。奇偶校验位:位于数据位之后,占1位,用于校验发送数据的正确性。停止位:位于一帧的末尾,占1~2位,为高电平,表示数据传送完毕。串行通信(2)同步通信同步通信适用于传送数据量大、传送速度要求较高的场合。同步通信时,每个数据块传送开始前,接收端和发送端必须先建立同步(即双方的时钟要调整到同一个频率),才能进行数据的传输。采用一到两个同步字符作为起始标志,接收端把接收到的字符和双方约定的同步字符比较,只有相同后才开始接收同步字符后的数据块。同步通信以数据块为传输单位连续地传送数据,数据之间不留间隙,因而数据传输速率高于异步通信,但同步通信对硬件要求较高,常见的同步通信方式有I2C,SPI通信。串行通信的波特率03串行通信的波特率波特率(BaudRate)是指单位时间内传输的比特数,通常以每秒传输的比特数(bps)来表示。波特率决定了数据信号的传输速率,在串行通信中是非常重要的一个参数。发送端和接收端必须使用相同的波特率,以确保数据能够正确地被接收和解析。如果两端的波特率不匹配,就会导致数据传输错误,甚至无法正常通信。常见的波特率包括9600bps、115200bps等,选择合适的波特率取决于通信双方的需求和通信环境。较低的波特率通常用于较长距离或较差的信号传输条件下。较高的波特率可以实现更快的数据传输速率,但同时也需要更高的通信稳定性和可靠性。在STM32微控制器中,通过设置USART模块的波特率寄存器来配置波特率,以实现串行通信。选择适当的波特率是保证通信质量和稳定性的关键步骤之一。6.2STM32单片机的USART01USART介绍03USART常用寄存器02USART功能了解USART的工作特点。了解USART的功能。了解USART常用寄存器的重要位。任务内容:任务要求:USART介绍01USART介绍USART(UniversalSynchronousAsynchronousReceiverTransmitter)是一种通用的串行通信接口,广泛应用于单片机、微处理器和其他数字电路中。它可以实现同步和异步两种通信方式,支持全双工通信,能够在单个通信线上同时发送和接收数据。USART介绍USART的具有以下特点:通用性:USART是通用的串行通信接口,可以用于与各种外部设备和其他微控制器进行数据交换。同步和异步通信:USART支持同步和异步两种通信模式。在同步模式下,发送和接收端使用共享的时钟信号
进行数据传输,而在异步模式下,发送端和接收端使用各自的时钟信号进行数据传输。全双工通信:USART支持全双工通信,即发送端和接收端可以同时进行数据传输,不受发送和接收的顺序限制。波特率可调:可以通过设置USART的波特率寄存器来调整通信的速率,以适应不同的通信需求和环境。数据格式灵活:USART支持多种数据格式,包括数据位数、校验位和停止位等的配置,可以根据具体的通信需求
选择合适的数据格式。硬件流控制:USART通常支持硬件流控制功能,包括RTS(RequesttoSend)和CTS(CleartoSend)信号,
用于控制数据的流动,提高通信的稳定性和可靠性。中断和DMA支持:USART可以通过中断或直接内存访问(DMA)方式来进行数据传输和处理,提高通信的效率和灵活性。USART功能02USART功能USART(通用同步异步收发器)是通用的串行通信接口,用于单片机和其他数字电路之间的数据传输。它通过三个引脚与其他设备连接在一起,至少需要两个引脚来实现双向通信,接收数据输入(RX)和发送数据输出(TX)。RX(接收端):接收串行输入数据。TX(发送端):发送串行输出数据。当发送端被启用但不发送数据时,TX引脚处于高电平空闲状态。USART功能通信协议:数据传输遵循一定的通信协议,如总线处于空闲状态、一个起始位、一个数据字(8或9位,最低有效位在前)、0.5、1.5或2个停止位等。分数波特率发生器:支持12位整数和4位小数的表示方法,用于调整通信速率。寄存器:USART具有多个寄存器,包括状态寄存器(USART_SR)、数据寄存器(USART_DR)、波特率寄存器(USART_BRR)和智能卡模式下的保护时间寄存器(USART_GTPR)。USART常用寄存器03USART常用寄存器使用STM32的USART串口通信时,常用的寄存器有USART_SR(状态寄存器),USART_DR(数据寄存器)和USART_BRR(波特率寄存器)。USART_SR是STM32中USART模块的状态寄存器,用于指示USART的状态和标志位,以下是USART_SR寄存器的一些重要位。接收数据就绪(RXNE):当接收到新的数据并存入接收数据寄存器(USART_DR)时,此位会被置位。发送数据寄存器空(TXE):当发送数据寄存器(USART_DR)为空且数据可发送时,此位会被置位。发送完毕(TC):当发送的最后一个数据位被发送完成后,此位会被置位。用于指示数据发送完毕。帧错误(FE):当接收到的数据帧中出现帧错误时,此位会被置位。噪声错误(NE):当接收到的数据帧中检测到噪声错误,此位会被置位。溢出错误(ORE):当接收数据寄存器(USART_DR)溢出时,此位被置位。USART常用寄存器USART_DR用于存放接收到的数据以及待发送的数据,对USART_DR的读写操作会触发数据的接收和发送。USART_BRR用于配置USART的波特率,它包含了分频器的设置,用于生成通信时钟,USART的通信速率由波特率寄存器中的值决定。这些寄存器在USART通信过程中起着重要的作用,用于指示状态、存储数据和配置通信速率。6.3USART应用01绘制仿真电路04UART发送代码03相关函数02USART初始化能绘制USART发送仿真电路。能对USART进行初始化设置。能编写USART发送代码。任务内容:任务要求:绘制仿真电路01绘制仿真电路在Proteus中新建基于STM32F103C8的工程,绘制仿真电路图,如图所示,仿真电路中PA9作为串行发送口(TXD)发送数据,我们用Proteus提供的虚拟仪器“VirtualTerminal”虚拟终端作为接收设备接收PA9发送的信息。绘制仿真电路Proteus提供的虚拟终端,它能够和单片机进行异步串行通信。虚拟终端具有双线串行数据接口:RXD用于接收数据,TXD用于发送数据。硬件握手接口:RTS用于准备发送,CTS用于清除发送。波特率从110到57600波特。7或8个数据位。奇偶校验,奇偶校验或无奇偶校验。0、1或2个停止位,打开虚拟终端的编辑元件对话框,如图所示设置波特率、数据位、校验位和停止位。USART初始化02USART初始化打开STM32CubeIDE软件,新建一个基于STM32F103C8单片机的“STM32Project”工程将系统时钟频率设置为72MHz,并配置“USART1”。在“connectivity”里选择USART,STM32F103C8单片机提供了三个USART,本任务中选择“USART1”。在右侧“USART1ModeandConfiguration”中选择通信模式为“Asynchronous”异步通信。选择之后STM32F103C8单片机引脚图会自动将PA9设置为“USART1_TX”,PA10设置为“USART1_RX”。USART初始化串行通信的收发双方必须遵循相同的通信协议才能够正常通信,在“parameterSettings”参数设置如图所示,进行“USART1”的配置。相关函数03相关函数HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,constuint8_t*pData,uint16_tSize,uint32_tTimeout);功能:用于通过UART发送数据。参数:①huartUART句柄,指定了要使用的UART外设。②pData指向要发送数据的缓冲区的指针。③Size要发送的数据的字节数。④Timeout发送超时时间,单位为毫秒。如果设置为0,则函数在发送完所有数据后立即返回。返回值:函数执行的状态,通常是HAL_OK或者HAL_ERROR。相关函数HAL_StatusTypeDefHAL_UART_Receive(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout);功能:用于通过UART接收数据。参数:①huartUART句柄,指定了要使用的UART外设。②pData指向用于存储接收数据的缓冲区的指针。③Size要接收的数据的字节数。④Timeout接收超时时间,单位为毫秒。如果设置为0,则函数在接收到所有数据后立即返回。返回值:函数执行的状态,通常是HAL_OK或者HAL_ERROR。相关函数HAL_StatusTypeDefHAL_UART_Transmit_IT(UART_HandleTypeDef*huart,constuint8_t*pData,uint16_tSize);功能:用于通过UART发送数据,采用中断方式进行发送。参数:①huartUART句柄,指定了要使用的UART外设。②pData指向要发送数据的缓冲区的指针。③Size要发送的数据的字节数。返回值:函数执行的状态,通常是HAL_OK或者HAL_ERROR。说明:此函数启动发送操作,并使UART发送完成中断(TXE)使能,一旦发送完成,将触发中断并调用相应的中断处理函数。相关函数HAL_StatusTypeDefHAL_UART_Receive_IT(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize);功能:用于通过UART接收数据,采用中断方式进行接收。参数:①huartUART句柄,指定了要使用的UART外设。②pData指向用于存储接收数据的缓冲区的指针。③Size要接收的数据的字节数。返回值:函数执行的状态,通常是HAL_OK或者HAL_ERROR。说明:此函数启动接收操作,并使UART接收完成中断(RXNE)使能,一旦接收到数据,将触发中断并调用相应的中断处理函数。UART发送代码04UART发送代码普通方式UART发送代码UART发送代码中断方式UART发送代码UART发送代码仿真结果6.4实战演练-USART收发控制LED01绘制仿真电路03编写代码02串口助手掌握通过STM32CubeMX初始化USART的流程。掌握UART输入、输出代码的编写方法。掌握串行通信相关软件的使用方法。任务内容:任务要求:绘制仿真电路01绘制仿真电路利用Proteus中的“COMPIM”和虚拟串口软件将仿真系统中的STM32F103C8单片机与计算机进行虚拟串行连接,通过串口助手实现计算机和单片机间的异步串口通信。STM32F103C8单片机的PB0连接LED,USART1连接“COMPIM”,编程实现计算机向单片机发送“A”时LED点亮,单片机向计算机发送反馈信息“LED_ON”;计算机向单片机发送“S”时LED熄灭,单片机向计算机发送反馈信息“LED_OFF”。在Proteus中新建基于STM32F103C8的工程,绘制仿真电路图,如图所示。绘制仿真电路在Proteus中,“COMPIM”是用于模拟串口通信的器件。它模拟了计算机与外部设备之间的串口通信,可以模拟串口发送和接收数据的过程。通常用于仿真串口通信的过程,方便在软件开发过程中进行调试和验证。绘制仿真电路项目仿真需要用到虚拟串口软件,该软件的作用是将Proteus中的“COMPIM”模拟串口与串口助手进行虚拟连接,方便实现UAST收发仿真调试。虚拟串口软件如图所示,已经创建了一组虚拟串口COM1和COM2,它们之间可以进行串行通信。串口助手02串口助手串口助手软件是一种用于串口通信的工具,通常用于调试和监视嵌入式系统、单片机等设备的串口通信。它能够实现以下功能。串口数据发送和接收:串口助手软件可以发送指定格式的数据到目标设备的串口,并接收目标设备发送回来的数据,从而实现双向通信。数据显示:串口助手软件可以将接收到的数据以指定的格式显示出来,包括文本、十六进制等格式,方便用户查看和分析。数据记录和保存:串口助手软件通常支持将接收到的数据记录到文件中,并可以随时保存和加载记录的数据,便于后续分析和处理。参数设置:串口助手软件提供了丰富的参数设置选项,包括串口波特率、数据位、校验位、停止位等,以及串口连接的选择、数据格式等,可以根据实际需求进行灵活设置。串口助手软件主要由串口设置区,信息接收区,信息发送区这三个区域组成。串口设置主要是设置通信协议,保证收发双方正常通信,信息接收区是用来显示单片机发送给计算机的信息。信息发送区作用是将计算机信息发送给单片机。串口助手打开串口助手,Proteus加载UART发送程序并运行,这时串口助手能收到来自STM32F103C8单片机发送的信息。编写代码03编写代码按要求在STM32CubeMX中完成USART1和GPIO配置后,点击“Project”菜单的“GenerateCode”生成代码,会在STM32CubeIDE自动创建工程文件,在“main.c”文件开始编写代码。完整代码见教材。编写代码仿真结果THANKYOU嵌入式原理与应用集成电路学院
嵌入式课程组STM32ADC应用项目77.1ADC简介01ADC03ADC的应用示例02STM32的ADC了解ADC的工作原理。了解STM32的ADC内部结构。任务内容:任务要求:ADC01ADCADC(Analog-to-DigitalConverter,模数转换器)是一种电子设备,用于将连续变化的模拟信号转换为离散的数字信号。在嵌入式系统和电子设备中,ADC是一种至关重要的组件,因为它允许微控制器和处理器捕获来自外部世界的模拟信号,如传感器数据、声音、光线等,并将其转换为数字形式,以便进行处理、存储和分析。ADC的工作原理基于采样和量化两个基本过程。在采样过程中,ADC周期性地测量模拟信号的电压值,并将其转换为数字形式。量化过程则将采样得到的模拟信号值映射到一系列离散的数字值中,以表示信号的大小和幅度。这些数字值通常由二进制编码表示,可以被微处理器或其他数字电路处理。ADCADC的性能通常由几个重要指标来描述,包括分辨率、采样速率、精度、输入电压范围和信噪比等。分辨率:指ADC能够将模拟信号分成多少个离散的数字值,即数字量变化一个最小值时模拟信号的变化量,通常以数字信号的位数来表示。转换速率:指A/D转换一次所需要时间的倒数,即单位时间内完成A/D转换的次数。采样速率:指ADC每秒钟可以进行多少次采样,是两次采样(两次转换)的间隔时间的倒数,为了保证转换的正确完成,一般采样速率必须小于等于转换速率。精度:表示ADC输出数字值与实际模拟信号之间的误差程度,通常以百分比或数字精度(例如,12位、16位)来表示。ADC在嵌入式系统中,ADC通常与传感器一起使用,用于测量和监测物理量,如温度、湿度、压力、光线等。通过将传感器的模拟输出信号转换为数字形式,微控制器可以对这些数据进行处理和分析,从而实现各种应用,如环境监测、自动控制、数据记录等。ADC的重要性和应用广泛性使其成为嵌入式系统中不可或缺的核心组件之一。STM32的ADC02STM32的ADCSTM32单片机的ADC是12位逐次逼近型模数转换器,它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的转换结果是12位,最后存储在16位的寄存器中。左对齐:12位的最高位是寄存器的最高位,低四位没有数据;右对齐:12位的最低位是寄存器的最低位,高四位没数据。STM32的ADCSTM32F1系列产品内嵌的ADC个数、通道数都不相同,使用前需要根据具体型号确定。本项目使用的STM32F103R6具有2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,可以实现单次或扫描转换。ADC的分辨率为12位;供电为2.4~3.6V;输入范围为0~3.6V(VREF-≤VIN≤VREF+);转换时间是可编程的,采样一次至少要用14个ADC时钟周期,而ADC的时钟频率最高为14MHz,当F1系列最高时钟频率72MHz时转换时间为1.17μs。STM32的ADCSTM32ADC引脚功能ADC的应用示例03ADC的应用示例STM32系列微控制器的模数转换器(ADC)是其中一个核心功能,它可以将模拟信号转换为数字信号。这种功能在许多应用中都是至关重要的,例如传感器数据采集、电池电压监测、音频信号处理等。1.传感器数据采集:许多传感器输出的是模拟信号,例如温度传感器、光敏传感器、压力传感器等。STM32ADC可以将这些模拟信号转换为数字信号,然后通过处理这些数字信号来获取传感器的实时数据。2.电池电压监测:在便携式设备或电池供电系统中,监测电池的电压是非常重要的。STM32ADC可以用来测量电池的电压,并根据电压水平采取相应的措施,例如提醒用户充电或关闭设备以防止电池过度放电。ADC的应用示例3.音频信号处理:在音频处理应用中,例如音频采集、音频处理和音频输出,ADC常用于将模拟音频信号转换为数字音频信号,以便后续数字信号处理和分析。4.功率监测:在电力电子系统中,对电流和电压的监测是至关重要的。STM32ADC可以用来测量电流和电压,从而实现功率监测和能量管理。5.环境监测:在智能家居、工业自动化和环境监测等应用中,使用STM32ADC可以进行温度、湿度、气压等环境参数的监测,实现对环境的实时监测和控制。7.2STM32ADC应用01STM32CubeMXADC初始化02ADC应用代码编写掌握STM32CubeMXADC初始化方法。能对ADC应用代码进行编写。任务内容:任务要求:STM32CubeMXADC初始化01STM32CubeMXADC初始化在Proteus中新建基于STM32F103C8的工程,在元件模式中添加“POT-HG”可调电阻,在虚拟仪器模式中添加“VirtualTerminal”虚拟终端,并绘制仿真电路图,如图所示。该电路实现功能是PA0将读取到的模拟量(可调电阻阻值)转换为数字量并发送到虚拟终端显示。STM32CubeMXADC初始化打开STM32CubeIDE软件,新建一个基于STM32F103R6单片机的“STM32Project”工程,用STM32CubeMX工具配置时钟树,因为STM32F1系列单片机ADC频率最高为14MHz,所以当时钟频率为72MHz时,需要对ADC频率进行6分频,将12MHz频率时钟提供给ADC。STM32CubeMXADC初始化时钟配置完成后在“Pinout&Configuration”找到“Analog”选择要使用的ADC及ADC1通道,如图所示,选择“ADC1”的通道0。STM32CubeMXADC初始化选择ADC及通道后需要对参数进行设置,如图所示。STM32CubeMXADC初始化在“Rank”中选择ADC通道和采样时间,采样时间如图所示,最短是“1.5Cycles”,最长是“239.5Cycles”,选择“1.5Cycles”时一次转换时间为1.17μs。ADC应用代码编写02ADC应用代码编写主函数“main.c”代码。ADC应用代码编写仿真结果7.3实战演练-实时温控电机系统设计01LM3504STM32单片机优势03温控电机系统设计02L298掌握通过STM32CubeMX初始化ADC、USART的流程。熟悉LM35温度传感器的使用方法。熟悉L298N电机驱动模块的控制方法。任务内容:任务要求:LM3501LM35LM35是一种经典的模拟温度传感器,常用于测量环境温度。LM35系列产品是高精度集成电路温度器件,其输出电压与摄氏温度成线性正比关系。LM35器件无需进行任何外部校准或修整,可在室温下提供±¼°C的典型精度,而在−55°C至+150°C的完整温度范围内提供±¾°C的精度。LM35器件具有低输出阻抗、线性输出和高精度内在校准功能,这些特性使得连接读取或控制电路变得尤为简单。此器件可使用单电源或正负电源供电。LM35器件额定工作温度范围为−55°C至150°C。LM35LM35特点:精准度高:LM35具有较高的温度测量精度,通常在±0.5°C以内。线性输出:LM35的输出是线性的,每摄氏度变化对应着10mV的输出电压变化。宽工作温度范围:LM35适用于较广泛的工作温度范围,通常在-55°C至+150°C之间。无需校准:由于LM35的输出是线性的,因此通常不需要进行校准即可获得准确的温度测量结果。低功耗:LM35的功耗非常低,使其适用于电池供电或功耗敏感的应用。方便接口:LM35的输出是模拟电压信号,可以直接连接到微控制器的模拟输入端口进行测量。可靠性高:LM35是一种成熟的传感器,具有较高的可靠性和稳定性,被广泛应用于工业和消费电子领域。L29802L298L298是一种经典的双H桥驱动芯片,常用于直流电机的驱动和控制。它具有双H桥结构,L298集成了两个H桥驱动电路,可以分别控制两个直流电机的转向和转速。L298可以分别接受逻辑控制信号和功率供电信号,实现逻辑电平与功率电平的隔离,从而保护微控制器和其他逻辑电路。L298能够提供较大的输出电流,通常可达2A至3A,适用于大部分小型直流电机的驱动需求。L298支持PWM(脉冲宽度调制)控制,可以通过调节PWM信号的占空比来实现电机的速度控制。L298广泛应用于小型机器人、车辆模型、智能小车、自动门控制等领域,是一种常用的直流电机驱动芯片。L298L298引脚功能如下:控制引脚IN1&IN2电机驱动器A的输入引脚,控制电机A转动及方向IN1输入高电平HIGH,IN2输入低电平LOW,对应电机A正转IN1输入低电平LOW,IN2输入高电平HIGH,对应电机A反转IN1、IN2同时输入高电平或低电平,对应电机A停止转动IN3&IN4电机驱动器B的输入引脚,控制电机B转动及方向IN3输入高电平HIGH,IN4输入低电平LOW,对应电机B正转IN3输入低电平LOW,IN4输入高电平HIGH,对应电机B反转IN3、IN4同时输入高电平或低电平,对应电机B停止转动L298输出引脚OUT1&OUT2电机驱动器A的输出引脚OUT3&OUT3电机驱动器B的输出引脚调速控制引脚ENA电机A调速开关引脚,使用PWM对电机A调速ENB电机B调速开关引脚,使用PWM对电机B调速温控电机系统设计03温控电机系统设计在Proteus中新建基于STM32F103R6的工程,在元件模式中添加温度传感器“LM35”和双H桥驱动芯片“L298”,绘制仿真电路图。“LM35”与ACD1的通道1(PA1)相连,“L298”的IN1和IN2分别接高电平和地,OUT1和OUT2连接直流电机,ENA连接单片机的PA15用于控制电机转速。虚拟终端连接PA9接收单片机串口发送的信息。温控电机系统设计主函数“main.c”代码。温控电机系统设计仿真结果。THANKYOU嵌入式原理与应用集成电路学院
嵌入式课程组综合应用—基于RTC实时时钟的智能电子万年历设计项目88.1LCD1602驱动显示01LCD1602参数与结构02LCD1602显示了解LCD1602参数与结构。了解LCD1602显示技术。学会LCD1602显示代码设计。任务内容:任务要求:LCD1602参数与结构01LCD1602参数与结构LCD1602是一种常用的字符型液晶显示模块,它由16列和2行字符组成,每个字符由5x8点阵构成。LCD1602模块通常用于嵌入式系统中,作为信息显示的输出设备,具有显示简单文本、数字、符号等功能。LCD1602广泛应用于信息显示、用户界面、环境监测、控制面板等各种嵌入式系统和电子设备中,是实现信息显示和用户交互的重要组成部分,LCD1602如下图所示。LCD1602参数与结构LCD1602参数显示字符:16×2个字符工作电压:4.5~5V工作电流:2.0mA工作温度:-20°C~70°C模块最佳工作电压:5.0V单个字符尺寸2.95×4.35(W×Hmm)引脚:16脚LCD1602参数与结构VSS(Ground):地线引脚,连接到电路的地线或地板。VDD(PowerSupply):电源引脚,连接到正极,通常接5V电源。VO(ContrastAdjustment):对比度调节引脚,通过调节电压来调整显示器的对比度。RS(RegisterSelect):寄存器选择引脚,用于选择数据或命令的传输。当RS为低电平时,数据为命令;当RS为高电平时,数据为显示数据。RW(Read/Write):读/写引脚,用于控制数据的读写操作。当RW为低电平时,进行写操作;当RW为高电平时,进行读操作。在一般的应用中,通常将RW接地,进行写操作。E(Enable):使能引脚,用于控制LCD模块的读写操作。当E由低电平变为高电平时,LCD模块开始执行命令或接收数据。D0-D7(DataLines):数据线引脚,用于传输数据和命令。在4位模式下,只使用D4-D7;在8位模式下,使用全部的D0-D7。A(Anode):背光灯阳极引脚,连接到正极,用于控制LCD的背光。K(Cathode):背光灯阴极引脚,连接到负极,用于控制LCD的背光。LCD1602显示02LCD1602显示一、LCD1602显示位置LCD1602内置了一个80字节的DDRAM,用来存放显示的内容,而LCD1602一共2行16列,因此只需要使用到其中的32个DDRAM。显示位置1234567...16DDRAM地址第一行0x000x010x020x030x040x050x06...0x0f第二行0x400x410x420x430x440x450x46...0x4fLCD1602显示二、LCD1602读写操作LCD1602读操作可以分为读状态和读数据,写操作可以分为写指令和写数据,LCD1602读写操作引脚状态如下表所示。操作控制引脚状态输入/输出读状态RS=L,RW=H,E=H输出读数据RS=H,RW=H,E=H输出写指令RS=L,RW=L,D0~D7=指令码,E=高脉冲输入写数据RS=H,RW=L,D0~D7=数据,E=高脉冲输入LCD1602显示在LCD1602读写时序如下图所示,在LCD1602的读时序中,首先需要将RS引脚置低以选择读取命令或数据,将RW引脚置高以指示读取操作,然后将E引脚置高,LCD准备好发送数据。此时,可以从数据总线D0-D7读取相应的数据。在读取完成后,将E引脚置低以结束数据传输。LCD1602显示在LCD1602的写时序中,首先需要将RS引脚置低以选择写入命令或数据,将RW引脚置低以指示写入操作,然后将要写入的命令或数据写入数据总线D0-D7。随后,将E引脚置高,LCD将接收数据并执行相应的操作。在写入完成后,将E引脚置低以结束数据传输。LCD1602显示三、LCD1602指令集LCD1602内部控制器共有11条控制指令,读/写操作、屏幕、光标操作都是通过指令编程来实现的,通过D7~D0的8位数据传输数据和指令。LCD1602显示四、LCD1602显示代码设计在Proteus中新建基于STM32F103C8的工程,在元件模式中添加“LM016L”并绘制仿真电路图,如图所示。PA0-PA2作为控制信号分别连接LCD1602的RS、RW和E,PB0-PB7作为数据口连接D0-D7。仿真有默认的VSS、VDD、VEE,因此电路中不做连接。LCD1602显示LCD1602接口配置代码一般都在“lcd1602.h”中,如果更换单片机或者更换GPIO口都需要在头文件中重新定义接口。项目“lcd1602.h”代码。LCD1602显示屏幕初始化代码LCD1602显示字符串代码“voidLCD_ShowString(uint8_ty,uint8_tx,char*str)”LCD1602显示LCD屏幕指定位置显示指定的字符串仿真结果8.2RTC实时时钟应用01RTC简介03RTC信息读写与修改02STM32CubeMX初始化RTC了解实时时钟RTC。掌握用STM32CubeMX初始化RTC。掌握RTC信息读写与修改。任务内容:任务要求:RTC简介01RTC简介RTC:实时时钟(Real-TimeClock),是一种用于跟踪时间的电子设备或模块。它能够提供当前的时间和日期,并且通常包括了定时、闹钟和备份电源管理等功能。在断电情况下RTC仍可以独立运行,只要芯片的备用电源(电池)供电,RTC更然能够正常工作。STM32单片机的RTC是一个重要的模块,用于提供准确的时间和日期信息,通常被用于需要时间戳或定时功能的应用中。它通常与内部晶振结合使用,以确保高精度的时间跟踪和计时功能。RTC模块通常包括时钟源、计数器、定时器、闹钟功能以及备用电源管理等功能。RTC简介STM32单片机的RCT可以选择三种时钟源,HSE时钟除以128,LSE振荡器时钟,LSI振荡器时钟。HSE时钟除以128:HSE(高速外部时钟)是STM32的外部时钟源之一,它可以连接到外部晶振或时钟信号源。当选择HSE时钟作为RTC时钟源时,系统会将HSE时钟除以128用作RTC的时钟源。LSE振荡器时钟:LSE(低速外部时钟)是另一种外部时钟源,通常是一个32.768kHz的振荡器,用于提供高精度的低速时钟。LSE时钟通常用于RTC以及其他低功耗模式下的时钟需求。选择LSE振荡器作为RTC时钟源可以提供较高的精度和稳定性。LSI振荡器时钟:LSI(低速内部时钟)是STM32内部集成的一个低频时钟源,通常运行在40kHz的频率。LSI时钟是由芯片内部的RC振荡器提供的,它相对于外部时钟源来说精度较低。LSI时钟适用于低功耗应用和简单的计时功能,但在需要高精度时钟的应用中通常不被选择。STM32CubeMX初始化RTC02STM32CubeMX初始化RTC在STM32CubeMX中打开“ClockConfiguration”,设置RCT时钟源,我们选择40KHz的LSI振荡器时钟。STM32CubeMX初始化RTC在“Pinout&Configuration”里找到“Timers”,勾选“RTC”,并在右侧的“RTCModeandconfiguration”中勾选“ActivateClockSource”和“ActivateCalendar”。"ActivateClockSource"选项用于启用已选择的RTC时钟源"ActivateCalendar"选项用于激活RTC日历功能STM32CubeMX初始化RTC在启用时钟源和日历后就需要进行参数设置,参数设置包括数据格式选择和初始时间、日期的设定。其中的“WeekDay”需要根据万年历查找日期对应的是星期几再设定。DataFormat数据格式二进制数据格式(BinaryDataFormat)BCD数据格式(BCDDataFormat)RTC信息读写与修改03RTC信息读写与修改初始化完成后就可以在“main.c”中进行RTC代码编写,得到实时时钟信息后通过USART1输出到虚拟终端中进行观
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年基础考核农产品食品检验员四级真题及答案完整版
- 2026年国企风险管理面试题目及核心答案
- 2026年福建省南安市高一数学上册期末考试模拟测试卷含完整答案(考点梳理)
- 2026年云南省大理市高一数学上册期末考试模拟试卷含答案【培优A卷】
- 2026年江苏省昆山市高一数学上册期末考试模拟卷及参考答案(培优A卷)
- 2026年湖北省汉川市高一数学上册期末考试模拟考试卷附参考答案(精练)
- 2026年广东省廉江市高一数学上册期末考试模拟测试卷及参考答案(培优B卷)
- 2026年河北省深州市高一数学上册期末考试模拟卷附参考答案(研优卷)
- 2026年河南省荥阳市高一数学上册期末考试模拟试卷(网校专用)附答案
- 2026年河南省新郑市高一数学上册期末考试模拟试卷附答案(基础题)
- 2025年广东省中山市初二地生会考真题试卷+答案
- 中小型水库运营方案
- 2026年电信智慧家庭工程师三级认证考试题及答案
- 高中物理必修3-基础知识自测小纸条(含答案)
- 2025江西新余市国盛工程检测有限责任公司招聘检测技术人员笔试历年备考题库附带答案详解
- 高压110KV线路工程施工技术标准范本
- 食品安全制度目录表
- TPM培训教材教学课件
- 心肺复苏知识课件
- 符合食品安全的洗涤剂标准说明
- 考试题及答案解析主数据治理相关
评论
0/150
提交评论