【百问网智能家居---基于单片机最小系统STM32F103C8T6_MINI的入门学习】

本人工作之余自学,该博客是为了记录学习过程,以及一些心得。内容如有出错,欢迎大家纠正,谢谢。

单片机通讯

在嵌入式中,通信将主控芯片与传感器、存储芯片、外围控制芯片等连接了起来,使得功能不再受限于主控本身。

串行/并行通信

在这里插入图片描述
1、串行通信简单的说就是数据依次传输,比如要传输0x11111111,一位一位的发送,需要发送8次,串行传输占用的通信线更少,成本低,通信速度相对较慢。
2、并行通信则是几个数据一起传输,同样是0x11111111,如果8位一起发送,只需要发送1次并行传输占用的通信线多,成本高,通信速度相对更快。
3、随着对传输速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展出差分传输等技术,极大的提高了串行传输速率,使得串行通信速度可能比并行通信速度更快。

全双工/半双工/单工传输

在这里插入图片描述
按照数据传输的方向,通信可以分为全双工、半双工和单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但同一时刻只能一方发送信息;单工指只能一方发信息,一方接受信息,通信是单向的。

同步/异步通信

在这里插入图片描述
按数据同步的方式,通信可以分为同步通信和异步通信。数据在双方之间传输时,需要制定规则保证数据传输的准确。
1、同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI、I2C。
2、异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按这个规则传输数据。
因此,可以通过是否有时钟信号,初步判断是何种数据同步方式。

串口

假如微处理器和板载的蓝牙透传模块通信时,一般就使用TTL电平,引脚直接连接即可。假如微处理器在工业现场,需要连接一个几十米外的装置,则应该考虑将TTL电平转为RS232、RS422、RS485。RS232增加电压的方式来抗干扰,RS422和RS485使用差分方式传输,差分方式传输可以理解为,两个线是在一起的,它们受到的干扰几乎是一样的,那么它们的差值也是保持不变的,这样就可以避免干扰,传输更远的距离。
在这里插入图片描述

串口的硬件连接和时序

常见的用途

1、 连接串口接口的模块;比如WIFI模块,芯片的模块和WIFI模块至少需要三个引脚(发送、接收、接地),收发引脚交叉连接。
2、 作为调试口;打印程序运行的状态信息;
3、 通过电平转换芯片,变为RS232/RS485电平,用于复杂工业环境;

串口数据传输的格式:

1、确定波特率,即每秒传输多少个bit位;体现了传输速度的快慢。
2、起始位—首先在默认的情况下,引脚的电平是高电平,然后,发出一个逻辑0信号,表示数据的开始;
3、数据位—然后发送5~8位的逻辑0或逻辑1,先传输第0位再传输第一位,依次传输。即传输的数据。
4、校验位—来检验数据传输的准确性。(可选,可以选择不传输)
5、停止位—字符结束的标志。再次把引脚变为高电平。
在这里插入图片描述
在嵌入式中,很多MCU和外设模块都集成有UART外设。 STM32F103系列最多有3个通用同步异步收发器( Universal synchronous asynchronous receiver transmitter USART), 2个通用异步收发器( Universalasynchronous receiver transmitter, UART)。 USART和UART的主要区别在于, USART支持同步通信,该模式有一根时钟线提供时钟。

实例一:在STM32CubeMX上,配置串口,把串口1USART1,用做串口的打印调试。

1、 打开CubeMX工程,找到通讯Connectivity目录,选择USART1,模式选择异步模式,因为串口传输是没有时钟信号的。
2、 参数设置,默认波特率115200,数据长度是8bit位,没有奇偶校验,停止位是一位。(全部默认即可)
在这里插入图片描述
3生成工程
打开主函数MX_USART1_UART_Init()函数,定义了一个USART1的结构体,并初始化结构体。

UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;

/* USART1 init function */

void MX_USART1_UART_Init(void)
{
   

  /* USER CODE BEGIN USART1_Init 0 */

  /* USER CODE END USART1_Init 0 */

  /* USER CODE BEGIN USART1_Init 1 */

  /* USER CODE END USART1_Init 1 */
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
   
    Error_Handler();
  }
  /* USER CODE BEGIN USART1_Init 2 */

  /* USER CODE END USART1_Init 2 */

}

在初始化串口之后,就可以使用HAL库提供的“ HAL_UART_Transmit()”从串口发送数据,使用“ HAL_UART_Receive()”接收数据,但这样使用不方便,需要自己处理数据类型。又因为这样发送的数据是原始数据,通常使用printf将数据格式化打印,比较方便。因此,这里需要重定向打印函数,在使用printf 时调用“ HAL_UART_Transmit()”打印。

重定向打印函数

1、HAL_UART_Transmit(&husart, (uint8_t*)&ch, 1, 10);函数参数修改为huart1;
2、添加头文件#include <stdio.h>;
点击魔法棒,打开工程选项界面,切换到“ Target”标签,勾选上“ Use MicroLIB”。
在这里插入图片描述
在这里插入图片描述
如果不勾选“ Use MicroLIB”,添加如下代码,可不在工程设置中勾选Use MicroLIB

/*
* 添加如下代码,可不在工程设置中勾选Use MicroLIB
*/
#pragma import(__use_no_semihosting)

struct __FILE
{
   
	int a;
};

3、 返回主函数,主函数测试函数

printf("百问科技 www.100ask.net\n\r");
printf("UART 实验\n\r");
printf("test char = %c,%c\n\r", 'H', 'c');
printf("test string1 = %s\n\r", "www.100ask.net");
printf
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
stm32f103c8t6_cmsis-dap_swo-master是一个软件项目的名称。其中,stm32f103c8t6是一款基于ARM Cortex-M3内核的单片机型号,它具有丰富的外设和强大的计算性能。cmsis-dap是一种与开发工具链无关的调试接口标准,它可以通过USB接口与主机进行通信,提供调试、编程和数据传输的功能。swo是Serial Wire Output的缩写,它是一种调试技术,可以通过SWO端口将调试信息输出到主机,实现实时跟踪和调试。 stm32f103c8t6_cmsis-dap_swo-master是一个为该单片机和调试技术开发的软件项目。该项目可能包含一些库文件、驱动程序和示例代码,用于支持stm32f103c8t6单片机的开发和调试工作。通过使用cmsis-dap接口和swo调试技术,开发人员可以更方便地进行程序的调试、测试和性能分析。 该项目可能提供如下功能:支持通过USB接口与stm32f103c8t6单片机进行调试和编程;提供一些常用的库函数和驱动程序,简化开发人员的工作;实现通过swo端口将调试信息实时输出到主机,方便进行程序的跟踪和调试。 对于开发人员来说,他们可以参考该项目提供的代码和文档,学习如何使用cmsis-dap接口和swo技术进行单片机的调试和开发。同时,他们也可以根据需要对该项目进行定制和修改,以满足自己的具体需求。 总的来说,stm32f103c8t6_cmsis-dap_swo-master是一个用于支持stm32f103c8t6单片机开发和调试的软件项目,它利用了cmsis-dap接口和swo调试技术,提供了方便、高效的开发环境和调试工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cara-xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值