《嵌入式单片机STM32原理及应用》第七章实例2

问题

        第七章的实例二主要是基于第六章的两个实例,对第六章的两个实例进行完善并增添功能。这里先把相关问题全部展示在下方。

        第六章实例1:串行异步通信应用——收发信息。

        借助串口助手,通过串口打印信息是一种常用的调试方法,在特定位置输出打印信息可以直观地观察程序的运行状态,判断程序的运行结果是否与预期逻辑一致。本例采用CH340芯片实现USB转串口。利用上位机的串口与STM32的SUART1通信。上位机通过键盘给STM32的串口发送字符,STM32将接收到的字符再传回上位机。在上位机上通过串口调试助手显示结果。

        第六章实例2:串行异步通信应用——上位机控制LED亮灭

        本例通过串口调试助手来实现与上位机通信,要求如下:

        1)按键控制LED2亮灭

        2)上位机可下发指令控制LED1亮灭,数据协议如下:

协议头 数据来源 LED1控制状态 保留
AABBCCDD 00:上位机 00:灭,01:亮 0000

        3)下位机通过串口中断接收上位机下发的指令,主程序判断指令的有效性,若有效则解析指令并控制LED1亮灭,若无效则上传指令无效信息(8个字节全为0)

        4)下位机每隔一段时间向上位机上传LED1和LED2状态信息,数据协议如下:

协议头 数据来源 LED1控制状态 LED2控制状态 保留
AABBCCDD 01:下位机 00:灭,01:亮 00:灭,01:亮 00

        第七章实例2:定时器设计实例——串行口定时上传信息

        结合第六章的串行通信,采用定时器定时中断功能,间隔1s上传LED1和LED2状态信息,其他要求不变。

代码

        这里直接给出工程文件中main文件中的代码,由于本人相关经验不足,为了方便调试,将所有代码集成在了同一个文件内。请读者见谅。

#include "stm32f10x.h"                  // Device header

#define data_num 8     					//定义数据个数,见表6-2
#define check_num 4   					//定义检测帧头数据
#define LED1_control_Bit 5  			//LED1 控制位
#define LED2_control_Bit 6  			//LED2 控制位

//定义LED开关函数
void LED1_On(void)
{
	GPIO_SetBits(GPIOA,GPIO_Pin_2);
}
void LED1_Off(void)
{
	GPIO_ResetBits(GPIOA,GPIO_Pin_2);
}
void LED
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值