《基于构件化的嵌入式系统设计》 课件 项目3、4 GPIO和定时器的综合应用-实现数码管显示、键盘检测与控制、测温功能;利用UART实现上位机和下位机的通信_第1页
《基于构件化的嵌入式系统设计》 课件 项目3、4 GPIO和定时器的综合应用-实现数码管显示、键盘检测与控制、测温功能;利用UART实现上位机和下位机的通信_第2页
《基于构件化的嵌入式系统设计》 课件 项目3、4 GPIO和定时器的综合应用-实现数码管显示、键盘检测与控制、测温功能;利用UART实现上位机和下位机的通信_第3页
《基于构件化的嵌入式系统设计》 课件 项目3、4 GPIO和定时器的综合应用-实现数码管显示、键盘检测与控制、测温功能;利用UART实现上位机和下位机的通信_第4页
《基于构件化的嵌入式系统设计》 课件 项目3、4 GPIO和定时器的综合应用-实现数码管显示、键盘检测与控制、测温功能;利用UART实现上位机和下位机的通信_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统设计

为了实现嵌入式系统设计的可移植和可复用,嵌入式硬件和嵌入式软件均采用构件化的设计思想,即对嵌入式硬件和嵌入式软件进行封装,供系统设计者调用,并倡导嵌入式软件分层设计的理念,以大幅度降低嵌入式技术学习难度和开发难度。

本书特色:项目任务驱动,突出学以致用,注重实践创新。每个项目且均采用了“通用知识”→“嵌入式构件设计”→“应用层程序设计”→“学以致用与创新”的学习流程。采用“搭积木”的思想,逐步提高嵌入式系统设计能力。

本书可作为高等学校电子信息类、计算机类、自动化类等专业的嵌入式系统设计教材,也可作为嵌入式技术培训教材,还可供从事嵌入式技术开发的工程技术人员参考。项目1:GPIO基础应用—实现闪灯和开关状态检测与控制功能项目2:利用定时中断实现频闪灯项目3:GPIO和定时器的综合应用—实现数码管显示、键盘测控、测温功能项目4:利用

UART

实现上位机和下位机的通信项目5:利用

Timer

实现PWM和输入捕获功能项目6:利用

ADC

设计简易数字电压表项目7:利用

SPI

实现多机串行通信项目8:利用

CAN

实现多机通信教

项目3GPIO和定时器的综合应用——实现数码管显示、键盘检测与控制、测温功能【项目导读】

数码管和键盘分别是嵌入式智能产品中常用的输出设备和输入设备。有些实际工程应用中需要对温度进行检测,实现某种控制功能。本项目是在项目1和项目2的基础上,综合利用GPIO和定时器实现数码管显示、键盘检测与控制、测温功能。【学习目标】(1)掌握数码管的通用知识,包括数码管的结构、基于MCU直接控制的数码管硬件构件设计方法、数码管的笔形码、基于MCU直接控制的数码管显示原理。(2)掌握键盘的通用知识,包括键盘的基本问题和两种接口方式。(3)熟悉带键盘扫描接口的数码管驱动控制专用芯片TM1637的功能特点,掌握基于TM1637的数码管和键盘硬件构件设计方法和软件构件设计方法。(4)掌握基于TM1637的数码管显示和键盘检测与控制的应用层程序设计方法。(5)熟悉1线数字式测温器件DS18B20的主要特点,掌握基于DS18B20的测温硬件构件设计方法和软件构件设计方法。(6)掌握基于DS18B20的测温功能应用层程序设计方法。项目3GPIO和定时器的综合应用——实现数码管显示、键盘检测与控制、测温功能任务3.1掌握数码管的通用知识3.1.1数码管的结构任务3.1掌握数码管的通用知识3.1.2基于MCU直接控制的数码管硬件构件设计

MCU需要9个GPIO引脚控制1位数码管,因此,若MCU直接控制4位独立数码管,则需要36个GPIO引脚,这将导致硬件电路连接复杂、MCU的GPIO引脚资源紧张。数据线位选线任务3.1掌握数码管的通用知识3.1.2基于MCU直接控制的数码管硬件构件设计

MCU直接控制四位一体组合数码管时,只需12个GPIO引脚,其中8个GPIO引脚控制数码管的8根数据线,4个GPIO引脚控制数码管的4根位选线。任务3.1掌握数码管的通用知识3.1.3数码管的笔形码共阳极数码管的笔形码(不带小数点)

若需要编制带小数点的笔形码,只需将此表中的h段改为“0”即可。

若使共阳极数码管的某段点亮,则该段对应的数据线应为低电平(逻辑0)。000000110xC00011111

10xF9111

0

00

00

0xA4111

0

0000

0xB01111

00

00

0x99111

00

00

0

0x9211

00000

0

0x8211111

000

0xF81

0000000

0x8011

00

0000

0x90111111110xFF

利用数组存放笔形码

若使共阳极数码管的某段不点亮,则该段对应的数据线应为高电平(逻辑1)。任务3.1掌握数码管的通用知识3.1.3数码管的笔形码【学以致用】

填写表3-3中共阴极数码管带小数点的“0.”

~

“9.”对应的笔形码。任务3.1掌握数码管的通用知识3.1.4基于MCU直接控制的数码管显示原理1、使某位数码管显示数据

例如,若要使第1位数码管显示数据“0”,则:

首先需要将位选线LED_CS1置为低电平,而其他位选线置为高电平;

然后将数码管数据

“0”对应的笔形码0xC0(11000000)送至数码管的8根数据线即可。011100000011任务3.1掌握数码管的通用知识3.1.4基于MCU直接控制的数码管显示原理2、使多位数码管轮流显示数据

例如,若要使4位数码管轮流显示“1”

“2”

“3”

“4”,则程序设计流程图如下:LED_CS1=0;LED_CS2=1;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xF9;

延时LED_CS1=1;LED_CS2=0;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xA4;

延时

LED_CS1=1;LED_CS2=1;LED_CS3=0;LED_CS4=1;LED_D7~LED_D0=0xB0;

延时

LED_CS1=1;LED_CS2=1;LED_CS3=1;LED_CS4=0;LED_D7~LED_D0=0x99;

延时

任务3.1掌握数码管的通用知识3.1.4基于MCU直接控制的数码管显示原理3、使多位数码管“同时”显示数据

若将延时时间缩短至5ms,则给人感觉4位数码管

“同时”显示“1”

“2”

“3”

“4”(视觉暂留)LED_CS1=0;LED_CS2=1;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xF9;

延时LED_CS1=1;LED_CS2=0;LED_CS3=1;LED_CS4=1;LED_D7~LED_D0=0xA4;

延时

LED_CS1=1;LED_CS2=1;LED_CS3=0;LED_CS4=1;LED_D7~LED_D0=0xB0;

延时

LED_CS1=1;LED_CS2=1;LED_CS3=1;LED_CS4=0;LED_D7~LED_D0=0x99;

延时

——动态扫描显示5ms5ms5ms5ms【知识巩固】

简述数码管动态扫描显示的原理和实现方法。任务3.2掌握键盘的通用知识3.2.1键盘的基本问题1、键盘操作、抖动问题4引脚直插式键盘按键实物图及内部结构图2引脚贴片式键盘按键实物图在嵌入式系统中,有两种常用的键盘按键。任务3.2掌握键盘的通用知识3.2.1键盘的基本问题1、键盘操作、抖动问题VCC按下抖动释放抖动稳定闭合5~10ms5~10ms理想实际

操作者几乎感觉不到抖动,但MCU以为操作者在此期间连续操作若干次键,从而引起按键命令的错误执行或重复执行,因此需要对按键抖动进行处理。(1)滤波去抖:实现键操作时电压的变化为理想的矩形波。(2)延时躲抖:MCU检测到有键被按下时,先软件延时10ms以避开按键抖动(惹不起但可以躲得起),然后再判断该键是否被按下。例如:电容滤波去抖。0.1uF任务3.2掌握键盘的通用知识3.2.1键盘的基本问题2、键盘连击问题

当按下某个键时,如果操作者还没有释放该键,则MCU以为操作者在连续操作该键(连击),对应的按键功能程序将会反复被执行。大多数应用场合需要防止连击,即一次按键只让MCU执行一次功能程序,该键不释放就不执行第二次。

在软件设计时,可这样做:当MCU检测到某个键被按下时,只执行一次功能程序,然后等待按键释放。任务3.2掌握键盘的通用知识3.2.2键盘的两种接口方式(基于MCU引脚直接连接)1、独立式键盘

各个键相互独立,按照一对一的方式连接到MCU的GPIO引脚或外部中断引脚上,另一端接地。

采用查询扫描时,MCU可通过直接读取KEY引脚的电平状态来判断键是否被按下。

采用外部中断扫描时,一般利用按键的下降沿触发MCU中断。

查键方便,但占用MCU的I/O引脚资源较多,因此一般适用于键较少的场合。

任务3.2掌握键盘的通用知识3.2.2键盘的两种接口方式(基于MCU引脚直接连接)2、矩阵式键盘

4×4=16个键,只需要MCU的8个GPIO引脚,应用于键较多的场合。

结构原理:

R1~R4引脚作为行线,C1~C4引脚作为列线,在每个行线和列线的交叉点放置一个键,当某个键被按下时,其对应的行线和列线短路,MCU通过检测是否有行线和列线短路来确定是否有键被按下,并确定被按下键的位置。行线列线任务3.2掌握键盘的通用知识【知识巩固】(1)按键抖动处理方法有哪些?它们的优点和缺点分别是什么?(2)什么是键盘连击?如何防止键盘连击现象?按键连击可以用于什么场合?(3)键盘有几种接口方式?分别对应的适用场合是什么?任务3.3基于TM1637的数码管和键盘构件设计

前面学习的数码管硬件构件和键盘硬件构件,均采用MCU的GPIO引脚直接连接方式,其优点是原理简单。但在同时需要使用数码管和键盘的应用系统设计中,若使用上述硬件构件,则明显存在占用过多GPIO引脚资源的缺点。

为了解决这一问题,可改用专门的数码管和键盘驱动芯片(如TM1637芯片)来简化硬件电路。

任务3.3基于TM1637的数码管和键盘构件设计3.3.1基于TM1637的数码管和键盘硬件构件设计1、TM1637功能特点

TM1637是一种带键盘扫描接口的数码管驱动控制专用芯片。可支持最多

6位

8段共阳极数码管显示;支持

2×8矩阵键盘扫描;两线串行接口(CLK、DIO),即MCU只需两个GPIO引脚即可与TM1637进行串行通信。数码管数据线/键盘扫描引脚数码管位选线引脚时钟线引脚串行数据输入/输出线引脚键盘数据输入引脚电源引脚(3.3~5V)接地引脚任务3.3基于TM1637的数码管和键盘构件设计3.3.1基于TM1637的数码管和键盘硬件构件设计1、TM1637功能特点任务3.3基于TM1637的数码管和键盘构件设计3.3.1基于TM1637的数码管和键盘硬件构件设计2、基于TM1637的数码管和键盘硬件构件设计图【思考总结】

使用TM1637驱动数码管和键盘,与基于MCU的GPIO引脚直接驱动数码管和键盘,有什么好处?两种驱动方式有何区别?任务3.3基于TM1637的数码管和键盘构件设计

基于TM1637的数码管和键盘软件构件TM1637_LED_KB由tm1637_led_kb.h头文件和tm1637_led_kb.c源文件组成,若使用该软件构件,则只需将这两个文件添加到所建工程的05_App(应用外设软件构件)文件夹中,即可实现MCU通过TM1637控制数码管显示功能和键盘扫描功能。

其中,tm1637_led_kb.h头文件主要包括头文件的包含、必要的宏定义、存放数码管笔形码的数组、存放键盘编码和对应键名的数组以及对外接口函数的声明,而tm1637_led_kb.c源文件是该软件构件对外接口函数的具体实现。见工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用户只要熟悉tm1637_led_kb.h

头文件的内容,即可使用该软件构件进行编程。3.3.2基于TM1637的数码管和键盘软件构件的组成及使用方法任务3.3基于TM1637的数码管和键盘构件设计【学以致用】

根据tm1637_led_kb.h头文件,写出实现下列功能的函数调用语句。

(1)对TM1637进行初始化。

(2)TM1637驱动数码管动态显示保存在数组disp[4]中的数据。

(3)TM1637控制数码管清屏。

(4)将用于保存数码管显示数据的数组disp[4]中的元素值更新为{5,6,7,8}。

(5)将TM1637扫描2×8矩阵式键盘而获取的按下键的键名赋给变量key_name。3.3.2基于TM1637的数码管和键盘软件构件的组成及使用方法任务3.4基于TM1637的数码管显示的应用层程序设计3.4.1使用软件延时实现数码管先后显示不同的数据

在嵌入式软件最小系统框架下,设计07_Source(应用层软件构件)的文件,以实现数码管先后显示不同的数据。1)工程总头文件includes.h:包含04、05、06文件夹中的头文件2)主程序源文件main.c:

定义数组(数码管显示数据缓冲区);初始化;

在主循环中实现数码管先后显示不同的数据在工程文件中分析代码并编程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【学以致用与创新】

(1)在主循环中,实现4位数码管先后显示2组数据。例如在1秒内显示年份“2023”,在下1秒内显示月日“0317”。

(2)在主循环中,实现4位数码管显示秒计数值。

(3)实现数码管的高位灭零功能:对于数据“0015”,数码管上只显示“15”,而高位的“00”不显示。任务3.4基于TM1637的数码管显示的应用层程序设计3.4.2使用定时中断实现数码管先后显示不同的数据

在嵌入式软件最小系统框架下,设计07_Source(应用层软件构件)的文件,以实现数码管先后隔秒显示年份和月日的效果。1)工程总头文件includes.h:

包含04、05、06文件夹中的头文件2)主程序源文件main.c:

定义全局数组(存放数码管显示的数据);

在主程序中,初始化;

在主循环中,数码管显示全局数组中对应的数据在工程文件中分析代码并编程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【学以致用与创新】

(1)实现数码管显示秒计数值。

(2)实现数码管显示分和秒的计数值,并且隔秒显示分和秒之间的小数点,即实现显示相对时钟的效果。3)中断服务程序源文件isr.c:声明全局数组;

在定时中断服务程序中,实现定时功能(更新全局数组的数据)任务3.5基于TM1637的键盘检测与控制的应用层程序设计3.5.1键盘检测与控制的查询程序流程任务3.5基于TM1637的键盘检测与控制的应用层程序设计3.5.2应用实例参考程序

在嵌入式软件最小系统框架下,设计07_Source(应用层软件构件)的文件,以实现对某个键(如1号键)的按键次数进行统计,并在数码管上显示该键的按键次数。1)工程总头文件includes.h:

包含04、05、06文件夹中的头文件2)主程序源文件main.c:

定义局部变量,初始化;

在主循环中,扫描键盘并执行按键功能程序在工程文件中分析代码并编程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【学以致用与创新】

(1)实现在某位数码管上显示按键的键名。

(2)实现在4位数码管上分别显示按照顺序按下的4个键的键名。例如,按照顺序依次按'1'、'2'、'3'、'4'键时,4位数码管依次显示“1”“2”“3”“4”。【实践验证】

将等待按键释放对应的语句去掉,重新运行程序,观察实验现象,体会语句的作用。任务3.6基于DS18B20的测温功能设计与实现3.6.1DS18B20的主要特点和基于DS18B20的测温硬件构件设计1、DS18B20的功能特点

DS18B20是

1线数字式

测温器件。其特点如下:

(1)只有3个工作引脚:电源引脚VDD、接地引脚GND和数据总线引脚DQ。

(2)MCU只需要一个GPIO引脚即可与DS18B20的DQ引脚进行串行总线通信,其中MCU作为主设备,DS18B20作为从设备,可灵活采用单主单从或一主多从的总线结构,实现单点或多点测温。

(3)测量温度范围为-55℃~+125℃,其中在-10℃至+85℃精确度为±0.5℃。其最高分辨率(默认设置)为12位(二进制),对应0.0625℃的温度分辨率。任务3.6基于DS18B20的测温功能设计与实现3.6.1DS18B20的主要特点和基于DS18B20的测温硬件构件设计2、基于DS18B20的测温硬件构件设计图任务3.6基于DS18B20的测温功能设计与实现3.6.2基于DS18B20的测温软件构件的组成及使用方法

基于DS18B20的测温软件构件由ds18b20.h头文件和ds18b20.c源文件组成,若使用该软件构件,则只需将这两个文件添加到所建工程的05_App(应用外设软件构件)文件夹中,即可实现MCU通过1个GPIO引脚获取所测温度的功能。

其中,ds18b20.h头文件主要包括头文件的包含、必要的宏定义以及对外接口函数的声明,而ds18b20.c源文件是该软件构件对外接口函数的具体实现。见工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx用户只要熟悉ds18b20.h

头文件的内容,即可使用该软件构件进行编程。任务3.6基于DS18B20的测温功能设计与实现3.6.3基于DS18B20的测温功能应用层程序设计

在嵌入式软件最小系统框架下,设计07_Source(应用层软件构件)的文件,使用SysTick定时中断实现每隔1s进行一次DS18B20温度转换并通过数码管显示温度的功能。1)工程总头文件includes.h:

包含04、05、06文件夹中的头文件2)主程序源文件main.c:

定义全局变量;

在主程序中,定义局部变量,初始化;

在主循环中,根据全局变量的值,每隔1s获取并显示温度在工程文件中分析代码并编程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【思路总结、学以致用与创新】

(1)请画出上述程序的设计和执行流程图。

(2)实现温度报警功能:若所测温度高于某个设定值,则点亮一个小灯或触发蜂鸣器响。3)中断服务程序源文件isr.c:

声明全局变量;

在定时中断服务程序中,实现定时功能(更新全局变量值)

嵌入式系统设计

为了实现嵌入式系统设计的可移植和可复用,嵌入式硬件和嵌入式软件均采用构件化的设计思想,即对嵌入式硬件和嵌入式软件进行封装,供系统设计者调用,并倡导嵌入式软件分层设计的理念,以大幅度降低嵌入式技术学习难度和开发难度。

本书特色:项目任务驱动,突出学以致用,注重实践创新。每个项目且均采用了“通用知识”→“嵌入式构件设计”→“应用层程序设计”→“学以致用与创新”的学习流程。采用“搭积木”的思想,逐步提高嵌入式系统设计能力。

本书可作为高等学校电子信息类、计算机类、自动化类等专业的嵌入式系统设计教材,也可作为嵌入式技术培训教材,还可供从事嵌入式技术开发的工程技术人员参考。项目1:GPIO基础应用—实现闪灯和开关状态检测与控制功能项目2:利用定时中断实现频闪灯项目3:GPIO和定时器的综合应用—实现数码管显示、键盘测控、测温功能项目4:利用UART实现上位机和下位机的通信项目5:利用

Timer

实现PWM和输入捕获功能项目6:利用

ADC

设计简易数字电压表项目7:利用

SPI

实现多机串行通信项目8:利用

CAN

实现多机通信教

项目4利用UART实现上位机和下位机的通信【项目导读】

为了实现上位机PC和下位机MCU之间的通信,可采用UART、USB、Ethernet等多种通信方式,其中UART是最简单的一种通信方式,也是学习其他通信方式的基础。【学习目标】(1)理解UART的通用知识,包括UART硬件、UART通信的数据帧格式、数据通信的波特率和串行通信的传输方式等。(2)熟悉MCU的UART主要特性和引脚,掌握MCU的UART底层驱动构件的使用方法。(3)能够利用MCU的UART底层驱动构件头文件进行PC和MCU的串口通信应用层程序设计与测试。(4)掌握通过UART实现利用格式化输出函数(printf)向PC输出数据的方法,为今后在嵌入式软件设计中使用printf调试奠定基础。*(5)熟悉MCU的UART底层驱动构件源文件的设计方法。项目4利用UART实现上位机和下位机的通信任务4.1理解UART的通用知识

UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发器)可实现异步串行通信功能。有时还将UART称为SCI(SerialCommunicationInterface,串行通信接口),简称串口。1、UART硬件

MCU的UART通信一般只需3根线:发送线TxD、接收线RxD和地线GND。

MCU可通过TTL-USB转换器连接到PC的USB接口,在PC上安装相应的驱动软件,就可实现MCU与PC之间的串口通信。2、UART通信的数据帧格式

UART通信的特点:数据以字节为单位,按位的顺序(如最低位优先)从一条传输线上发送出去。

(1)发送1位起始位——逻辑“0”,用于通知接收方通信同步。

(2)依次发送8位数据D0~D7(低位在前、高位在后)。

(3)发送1位奇偶校验位(可选),便于接收方检测数据发送是否正确。

(4)发送1~2位停止位——逻辑“1”,用于通知接收方该帧数据已发送完成。

若发送方无数据发送,则通信线路上保持空闲状态——逻辑“1”。若发送方发送下一个UART数据帧,则要重新发送起始位,然后发送一字节的新数据。任务4.1理解UART的通用知识3、数据通信的波特率

波特率:每秒钟传输二进制数码的位数,单位是bit/s。波特率越高,数据传输的速度就越快。只有通信双方的波特率相同时才可以正常通信。

串口通信常用的波特率:1200、1800、2400、4800、9600、19200、38400、57600、115200等(bit/s)。4、串行通信的传输方式

(3)半双工通信:通信双方双向传输信息,但在任何时刻,只能由一方发送数据,另一方接收数据,不能同时收发。如,对讲机通信。

(2)全双工通信:通信双方双向传输信息,且可以同时发送和接收。如,手机通信。一般情况下,MCU的UART通信接口均是全双工的。

(1)单工通信:通信的发送方与接收方,单向传输信息。如,无线电广播、有线电视广播。

任务4.1理解UART的通用知识5、MCU的UART内部结构及编程模型将8位串行数据转换为1字节的并行数据用于存放接收的数据将1字节的并行数据转换为8位串行数据用于存放待发送的数据用于判断是否接收到数据、数据是否发送完成等用于设置数据帧格式(8位或9位数据)、是否校验、是否允许中断等用于设置UART通信波特率任务4.1理解UART的通用知识【知识巩固】

(1)MCU的UART通信一般需要几根线?分别是什么?

(2)画出UART通信的数据帧格式示意图。

(3)串行通信速率是否越高越好?

(4)串行通信有哪些传输方式?任务4.2掌握MCU的UART底层驱动构件使用方法4.2.1MCU的UART主要特性和引脚

STM32F103C8T6中有

3个

USART模块:USART1、USART2和USART3。既支持全双工通信,也支持同步单向通信和半双工单线通信。利用分数波特率发生器提供宽范围的波特率选择,波特率最高可达4.5Mbit/s。

UART发送数据引脚为UART_TX,接收数据引脚为UART_RX。UART1使用的引脚,见

uart.h中的宏定义任务4.2掌握MCU的UART底层驱动构件使用方法4.2.2MCU的UART底层驱动构件的组成及使用方法

UART具有初始化、发送和接收三种基本操作。其中,UART发送是主动任务,不必采用中断方式;而UART接收是被动任务,为了确保及时接收到对方发送来的每帧数据,一般采用中断方式。

UART底层驱动构件由uart.h头文件和uart.c源文件组成,若要使用UART底层驱动构件,只需将这两个文件添加到所建工程的04_Driver(MCU底层驱动构件)文件夹中,即可实现对UART的操作。见工程文件:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx

其中,uart.h头文件主要包括相关头文件的包含、一些必要的宏定义、对外接口函数的声明,而uart.c源文件则是对外接口函数的具体实现,初学者不必深究。

用户只要熟悉uart.h头文件的内容,即可使用UART底层驱动构件进行编程。任务4.2掌握MCU的UART底层驱动构件使用方法4.2.2MCU的UART底层驱动构件的组成及使用方法【学以致用】

根据uart.h头文件,写出实现下列功能的函数调用语句。

(1)初始化UART1,波特率为9600bit/s。

(2)通过UART1发送1个字符'A'。

(3)通过UART1发送保存在数组str中的字符串"ABCDEFG"。

(4)使能UART1接收中断。

(5)通过UART1接收1个字符,将其保存至变量re_data中,并将接收标志保存至变量re_flag中。任务4.3UART通信应用层程序设计与功能测试4.3.1UART通信的应用层程序设计

在嵌入式软件最小系统框架下,设计07_Source(应用层软件构件)的文件,以实现:上位机PC

下位机MCU之间的串口通信。1)工程总头文件includes.h:包含04、05、06文件夹中的头文件2)主程序源文件main.c:

定义字符数组(存放待发送的字符型数据);

初始化;使能UART接收中断;

在主循环中,MCU通过UART使用发送函数向PC发送数据在工程文件中分析代码并编程:..EmbeddedSource\03-Software\STM32F103\STM32F103.uvprojx【思路总结】请画出上述程序的设计和执行流程图。3)中断服务程序源文件isr.c:在UART接收中断服务程序中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论