版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统设计
为了实现嵌入式系统设计的可移植和可复用,嵌入式硬件和嵌入式软件均采用构件化的设计思想,即对嵌入式硬件和嵌入式软件进行封装,供系统设计者调用,并倡导嵌入式软件分层设计的理念,以大幅度降低嵌入式技术学习难度和开发难度。
本书特色:项目任务驱动,突出学以致用,注重实践创新。每个项目且均采用了“通用知识”→“嵌入式构件设计”→“应用层程序设计”→“学以致用与创新”的学习流程。采用“搭积木”的思想,逐步提高嵌入式系统设计能力。
本书可作为高等学校电子信息类、计算机类、自动化类等专业的嵌入式系统设计教材,也可作为嵌入式技术培训教材,还可供从事嵌入式技术开发的工程技术人员参考。项目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接收中断服务程序中,MCU使用UART接收函数
接收PC发来的数据,并向PC回送接收到的字符任务4.3UART通信应用层程序设计与功能测试4.3.2UART通信的测试方法
(1)将USB-TTL转换器TTL端的RX、TX、GND端子分别与MCU的TX、RX、GND引脚(参照uart.h中的引脚宏定义)相连接,将USB-TTL转换器的USB端与PC的USB接口连接;
(2)打开PC串口调试软件,打开串口,并且设置与MCU的UART相同的波特率;
(3)运行MCU程序,通过PC串口调试窗口查看MCU发送给PC的信息;
(4)在PC串口调试窗口中写入字符或字符串并发送给MCU,在串口调试窗口中查看是否有MCU回送到PC的信息;
(5)调试结束后,先在PC串口调试软件中关闭串口,然后将USB-TTL转换器从PC的USB接口断开。任务4.3UART通信应用层程序设计与功能测试【学以致用与创新】
当通过PC串口调试窗口向MCU发送不同的字符时,可改变项目1中不同小灯的状态。任务4.3UART通信应用层程序设计与功能测试4.3.3使用printf函数输出数据1、通过UART使用
printf
函数的方法
使用printf函数时,需要将printf软件构件对应的printf.h头文件和printf.c源文件添加到所建工程的06_Soft(通用软件构件)文件夹中。
在printf.h头文件中,添加了以下两条预处理命令:
2、printf函数的调用形式:printf(格式控制字符串,输出列表)(1)格式控制字符串:由双撇号括起来的一个字符串,它包含两种信息。
①由%开头的格式符,用于指定数据的输出格式。例如,%d:以十进制形式输出带符号整数;%c:输出单个字符;%x:以十六进制形式输出无符号整数;%s:输出字符串;%f:以小数形式输出实数;%e:以指数形式输出实数。②原样输出的字符,在显示中起提示作用。(2)输出列表:是需要输出的一些数据,可以是常量、变量或表达式。
多个数据之间要用逗号隔开。
任务4.3UART通信应用层程序设计与功能测试4.3.3使用printf函数输出数据3、通过UART使用printf函数输出数据的应用层程序设计1)工程总头文件includes.h:包含04、05、06文件夹中的头文件2)主程序源文件main.c:
定义局部变量(存放待发送的数据);
初始化;MCU通过UART使用printf函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度农村电商项目担保贷款合同范本(扶贫振兴专版)3篇
- 建筑装潢工作总结
- 建设和谐医患关系的年终总结
- 儿童如诗 语文阅读理解
- 幼儿言语的形成课程设计
- 机械课程设计牛头刨床
- 春季学期开学典礼校长致辞
- 电子课程设计问题
- 工作管理课程设计
- 液压系统课程设计接单
- 安徽省池州市贵池区2023-2024学年高二数学第一学期期末综合测试模拟试题含解析
- 干湿球温度湿度换算表
- 儿童英文自我介绍演讲PPT模板(完整版)
- 请款单(可直接打印-标准模板)
- 最专业的无人机中文英语对应词汇
- 高中学生学籍表模板(范本)
- 消防验收常见问题汇总
- 1027试验设计课件
- 纤维支气管镜检查术护理
- 第章物流与供应链管理
- 公开课教我如何不想他课件-PPT
评论
0/150
提交评论