在嵌入式开发中,为了辅助提高开发效率,我们需要调试工具,串口就是一个简单易用的调试工具,能够通过串口输出信息了解硬件的工作状态和参数
stm32库函数开发中,在printf函数的实现中提供了一个后门,关于其中硬件输出的部分需要使用者自己实现,后门接口函数是一个发送字符的函数:
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
}
FILE __stdout;
//定义_sys_exit函数避免使用半主机模式
void _sys_exit(int x)
{
x = x;
}
int fputc(int ch,FILE *f)
{
….
}
超声波模块是用来测量距离的一种产品,通过发送和接收超声波,利用发送和接收的时间差和声音的传播速度,计算出障碍物和模块之间的距离

量程:2cm-400cm
精度:3mm



(1)模块如何工作
发送>10us的启动信号
等待接收高电平响应,高电平时间就是发送接收时间差
(2)模块接口
5V供电
通信接口是GPIO

Echo ———– PC6(输入)
Trig ———– PC8(输出)
17*i/100 cm
(1)使用延时检测
(2)使用定时器检测
变高将定时器初始值设为0(TIM_SetCounter)
变低读取定时器计数值(TIM_GetCounter)
通过计数值来计算距离
距离<10cm LED1亮报警
练习:
使用串口命令控制 蜂鸣器 读取距离….


dht11只有一根数据线和CPU连接,这种使用一根数据线通信的方式叫单总线(一线式总线)
(1)误差和量程

(2)通信操作


(3)通信时序

起始信号和dht11的响应

0和1的传输表示


最简单的判断方法就是等待数据线变高后延时40-50us,读取总线上的电平(高-1 低-0),高位先出
采样周期>1s








