Stm32 与上位机和下位机通讯通讯问题

如果是同步通信则会使用到SCLK同步时钟,下面是它的结构体如果是异步通信,就用不上(实际中常用的是异步通信)

USART串口通信使用到固件库函数:

(1)拷贝工程模板妀工程名为:USART,在 /* 发送一个字符串 */ //实际应用中可参考pull data的方式获取数据进行处理

实验现象:使用环形队列方式发送数据

 根据引脚接线图可知,串口USART2接在APB1总线上TX对应的引脚是PA2,TX对应的引脚是PA3

(1)将板子上的串口区域的TXD引脚和PA10引脚之间的跳帽拔掉RXD引脚和PA9引脚之间的跳帽拔掉,使用两根杜邦线将

TXD引脚和A2引脚连接RXD引脚和A3引脚连接;

// 使用哪个串口(串口1..5),改为串口2 // APB1串口的同步时钟改为总线APB1 // APB1系统时钟(因为串ロUSART2是挂载到APB1总线上的,所以要打开APB1总线的时钟) // 串口通信的波特率 // APB1系统时钟(因为串口USART2是挂载到APB1总线上的所以要打开APB1总线的时钟) /* 串口調试配置函数:配置串口的相关参数,使能串口 */

一、上位机和下位机通讯给单片机发送数据单片机有两个方法可以接收数据:
    单片机在檢测到有数据过来的时候,产生一个中断然后在中断服务函数中将数据接收下来。
(2)使用库函数重定向

/* 等待串口输入数据 */

 二、单片機给上位机和下位机通讯发送数据,单片机有两个方法可以发送数据:

/* 发送一个字节数据到串口 */

(1)为了不相互干涉先把中断函数屏蔽掉:

/* 等待串口输入数据 */
USART串口通信实验:先实现开发发送数据到电脑的串口通信实验的最简单操作 随便发送一个简单字符到电脑,使用串口調试助手接收并打印显示出来 // 接收到的数据存放到局部变量中 /* 尝试从开发板发送一个字符到电脑上的串口调试助手并显示 */ // 使用printf函数将数據输出到上位机和下位机通讯 // 使用getchar函数接收上位机和下位机通讯数据 // 使用printf函数将数据返回到上位机和下位机通讯

将程序烧录到单片机,打開串口调试助手发送一个字符 1 到单片机,单片机将字符 1 返回到串口调试助手

(1)发送字符 1D4亮D5灭

(2)发送字符 2,D4灭D5亮

(3)发送非 1/2字符D4、D5均灭

 (1)在main.c的同级目录下新建目录led,在led目录下新建两个文件bsp_led.c和bsp_led.h并将这两个文件添加到工程中的USER目录下

/* 和LED功能模块相关的程序 */
 
 
 
 
 
查stm32f10x的官方Φ文手册的第8.2章的ODR寄存器,要点亮LED根据原理图,要输出低电平0
C语言中,^表示异或即a^b表示a和b不同时输出为1,相同时输出为0比如0^1=1,1^1=0,0^0=0,
第┅次p为0i一直为1,第一次异或结果输出1第二次输出0,第三次输出1这样间断输出010101,灯不断亮灭
// 输出高电平(让LED端口置1BSRR寄存器用于位置1)
// 输出低电平(让LED端口置0,BRR寄存器用于位清除)
 
 
/* 和LED功能模块相关的程序头文件 */
 
 
 
 /*第二步:配置外设的初始化结构体*/
 
 
 /*第三步:调用外设初始化函数把配置好的结构体成员写到寄存器里面*/
 
USART串口通信实验:先实现开发发送数据到电脑的串口通信实验的最简单操作 随便发送一个简单芓符到电脑,使用串口调试助手接收并打印显示出来 // 接收到的数据存放到局部变量中 /* 尝试从开发板发送一个字符到电脑上的串口调试助手并显示 */ // 使用printf函数将数据输出到上位机和下位机通讯 // 使用getchar函数接收上位机和下位机通讯数据 // 使用printf函数将数据返回到上位机和下位机通讯

将程序烧录到单片机中,打开串口调试助手默认情况下,D4和D5两盏灯都是灭的输入1,D4亮D5灭输入2,D4灭D5亮输入其他字符,D4和D5都灭

二、单片機给上位机和下位机通讯发送数据单片机有两个方法可以发送数据:

本课程主要目标是让大家学会MFC上位机和下位机通讯的编程、STM32下位机编程单单的会上位机和下位机通讯或者下位机有时候体会不到通讯的乐趣,如果你单单会下位机你學了本课程,你可以把你的数据以任何方式在windows上呈现出来如果你只会上位机和下位机通讯,你学了本课程你可以通过windows的串口、以太网、USB控制任何硬件设备本课程的目标就是补偿大家的短处,让大家成为综合性人才同时让大家体会到通讯中的更多乐趣。

我要回帖

更多关于 上位机通讯 的文章

 

随机推荐