| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> PCM开发板模块实验指导--功能指令2:串口实验 -> 正文阅读 |
|
[嵌入式]PCM开发板模块实验指导--功能指令2:串口实验 |
????????14---串口查询接收实验: ????????????????硬件需求:PC机,PCM模块一个,microUSB线; ????????????????软件需求:PCM编译软件,电脑端串口调试助手; ????????????????供电方式:USB线接PC机供电; ????????????????连接电路:无 ????????????????????????本实验使用串口0,只要使用USB线连接电脑,即可用供电又可以通讯。程序启动 ????????????????时,模块会发送一串数据到PC机,然后模块进入无限循环,等待PC机发送过来的数 ????????????????据。模块不停查询状态位S3,当S3置位时,表示模块接收到数据,模块打印出接收的数 ????????????????据,然后又通过串口0把接收的数据又发送给PC机。图5所示为程序运行的显示结果。 ????????????????????????实验程序如下: ????????????????1 main ????????????????????????//初始化串口0,波特率115200,接收数据起始地址为D40,接收字节数存入D29, ? ? ? ? ? ? ? ? ? ? ? ? //接收完成S3会被置位 ????????????????2 ????????serial 0 115200 d40 d29 s3 ????????????????3 ????????prints "PCM start send data\r\n"?//程序启动后打印提示字符 ????????????????4 ????????strcopy "PCM-V-WE-1-0-1" d0 //要发送的字符“PCM-V-WE-1-0-1”存入D0开始的 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //寄存器,共14个字节 ????????????????5 ????????strlen d0 d10 //获取字符串的长度并保存到D10寄存器中 ????????????????6 ????????serialsend 0 d0 d10?//串口0发送指令,发送数据在D0开始的地址,共发送14个字 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //节 ????????????????7 ????????while 1 //无限循环 ????????????????8 ????????????????if s3 //S3置位表示串口0有接收到数据 ????????????????9 ???????????????????????????????reset s3 //首先清零S3 ????????????????10 ??????????????????????????????????????prints "\r\nPCM recieve data lenth is %d bytes" d29?//打印提示字符 ?? ????????????????11 ??????????????????????????????????????prints "\r\nNow send the same data:\r\n" //打印提示字符 ????????????????12 ??????????????????????????????????????serialsend 0 d40 d29 //串口0发送指令,D40为要发送的起始地址, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //D29为要/发送的字节数 ????????????????13 ???????????????????????endif ????????????????14 ????????endwhile ????????????????15 endmain ????????????????????????程序中第2行为串口初始化指令,初始化串口0,即USB接口,波特率115200,串口 ????????????????接收的数据保存到D40起始的寄存器中,串口接收到的字节数保存到D29寄存器中,串口 ????????????????接收完成会置位S3; ????????????????????????第3行prints指令实际也是从串口0输出; ????????????????????????第4行使用strcopy指令保存字符串到D0起始的寄存器中; ????????????????????????第5行使用strlen指令获取D0寄存器中的字符串长度,并把长度值存储到D10寄存器 ????????????????中,单位是字节数; ????????????????????????第6行使用串口0发送数据,要发送的数据在D0寄存器中,发送的长度为D10的值; ????????????????????????第7-14行为无限循环体,循环体内不停的查询S3的状态,如果为1,表示串口0接收 ????????????????到数据,第9行先复位S3,第10,11行输出提示信号,第12行使用串口0发送数据,D40 ????????????????保存的是接收到的数据,D29是长度,也就是把刚才接收的数据全部发送回去。 ????????????????????????在编译软件中输入以上的程序(蓝色字体),保存后,按运行菜单下的编译按钮; ????????????????????????编译成功后,通过USB线连接好模块,然后选择工具菜单下面的串口按钮,选择连 ????????????????接的串口号,然后再按下用户程序下载按钮把程序下载到开发板模块,如果下载失败, ????????????????重新按一下模块上面的复位键后重新下载; ????????????????????????下载完成后,在电脑上打开串口调试助手,按图5的显示设置串口并打开串口,按 ????????????????一下模块上面的start按钮,用户程序开始运行。 ????????????????????????图5为串口助手显示的信息,可以看出从串口助手中发送的数据,开发板模块接收 ????????????????后又马上发送回来。实验结果是正确的。 ????????图5 串口查询接收实验 ????????15---串口接收中断实验: ????????????????硬件需求:PC机,PCM模块一个,microUSB线; ????????????????软件需求:PCM编译软件,电脑端串口调试助手; ????????????????供电方式:USB线接PC机供电; ????????????????连接电路:无 ????????????????????????本实验与串口查询接收实验不同之处在于把串口接收程序放在中断程序中处理。运 ????????????????行结果与串口查询接收实验一样。图6所示为程序运行的显示结果。 ????????????????????????实验程序如下: ????????????????1 intpro serialrecvint?//串口中断程序 ????????????????2 ????????prints "\r\nPCM recieve data lenth is %d bytes" d29?//打印提示字符 ?? ????????????????3 ????????prints "\r\nNow send the same data:\r\n" //打印提示字符 ????????????????4 ????????serialsend 0 d40 d29 //串口0发送指令,D40为要发送的起始地址,D29为要 ????????????????????????????????????????????????????????//发送的字节数 ????????????????5 endint ????????????????6 main ????????????????7 ????????intinit s3 serialrecvint //初始化串口接收中断 ????????????????????????//初始化串口0,波特率115200,接收数据起始地址为D40,接收字节数存入D29, ? ? ? ? ? ? ? ? ? ? ? ? //接收完 成S3会被置位 ????????????????8 ????????serial 0 115200 d40 d29 s3 ????????????????9 ????????prints "PCM start send data\r\n"?//程序启动后打印提示字符 ????????????????10 ????????strcopy "PCM-V-WE-1-0-1" d0 //要发送的字符“PCM-V-WE-1-0-1”存入D0开始的 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //寄存器,共14个字节 ????????????????11 ????????strlen d0 d10 //获取字符串的长度并保存到D10寄存器中 ????????????????12 ????????serialsend 0 d0 d10?//串口0发送指令,发送数据在D0开始的地址,共发送14个 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //字节 ????????????????13 ????????while 1 //无限循环 ????????????????14 ???????????????endwhile ????????????????15 endmain ????????????????????????程序中第1-5行为串口接收中断程序,当串口接收完数据后,程序会自动跳转到此程 ????????????????序段执行; ????????????????????????第7行初始化S3中断,中断程序名为serialrecvint,当串口接收到数据后会置位S3, ????????????????然后程序自动跳转到serialrecvint中断程序执行,执行完成后会自动复位S3,这是与串口 ????????????????接收查询的区别; ????????????????????????其他行程序与串口查询程序一样。 ????????????????????????在编译软件中输入以上的程序(蓝色字体),保存后,按运行菜单下的编译按钮; ????????????????????????编译成功后,通过USB线连接好模块,然后选择工具菜单下面的串口按钮,选择连 ????????????????接的串口号,然后再按下用户程序下载按钮把程序下载到开发板模块,如果下载失败, ????????????????重新按一下模块上面的复位键后重新下载; ????????????????????????下载完成后,在电脑上打开串口调试助手,按图5的显示设置串口并打开串口,按 ????????????????一下模块上面的start按钮,用户程序开始运行。 ????????????????????????图6为串口助手显示的信息,可以看出从串口助手中发送的数据,开发板模块接收 ????????????????后又马上发送回来。实验结果是正确的。 图6 串口接收中断实验 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:20:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |