如果是同步通信则会使用到SCLK同步时钟,下面是它的结构体如果是异步通信,就用不上(实际中常用的是异步通信)
USART串口通信使用到固件库函数:
(1)拷贝工程模板妀工程名为:USART,在 /* 发送一个字符串 */ //实际应用中可参考pull data的方式获取数据进行处理
实验现象:使用环形队列方式发送数据
根据引脚接线图可知,串口USART2接在APB1总线上TX对应的引脚是PA2,TX对应的引脚是PA3
(1)将板子上的串口区域的TXD引脚和PA10引脚之间的跳帽拔掉RXD引脚和PA9引脚之间的跳帽拔掉,使用两根杜邦线将
TXD引脚和A2引脚连接RXD引脚和A3引脚连接;
一、上位机和下位机通讯给单片机发送数据单片机有两个方法可以接收数据:
单片机在檢测到有数据过来的时候,产生一个中断然后在中断服务函数中将数据接收下来。
(2)使用库函数重定向
二、单片機给上位机和下位机通讯发送数据,单片机有两个方法可以发送数据:
(1)为了不相互干涉先把中断函数屏蔽掉:
将程序烧录到单片机,打開串口调试助手发送一个字符 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功能模块相关的程序头文件 */ /*第二步:配置外设的初始化结构体*/ /*第三步:调用外设初始化函数把配置好的结构体成员写到寄存器里面*/
将程序烧录到单片机中,打开串口调试助手默认情况下,D4和D5两盏灯都是灭的输入1,D4亮D5灭输入2,D4灭D5亮输入其他字符,D4和D5都灭
二、单片機给上位机和下位机通讯发送数据单片机有两个方法可以发送数据:
本课程主要目标是让大家学会MFC上位机和下位机通讯的编程、STM32下位机编程单单的会上位机和下位机通讯或者下位机有时候体会不到通讯的乐趣,如果你单单会下位机你學了本课程,你可以把你的数据以任何方式在windows上呈现出来如果你只会上位机和下位机通讯,你学了本课程你可以通过windows的串口、以太网、USB控制任何硬件设备本课程的目标就是补偿大家的短处,让大家成为综合性人才同时让大家体会到通讯中的更多乐趣。