the first passage

this is the first passage of HEXO
SEVO 实验室

近期学习总结

从放假开始到现在进行了软件及硬件的学习,在这个过程中收获了很多

硬件方面

从最开始的画元器件的原理图,到后来按照学长给的电驱原理图画属于自己的PCB,当然也遇到了很多的问题,在使用AD18的过程中,逐步学会了如何从已有的PCB中导出元件库,重新定义PCB shape尺寸,同时向实验室的其他同学请教,了解了更多AD18的快捷键组合,知道了如何进行原理图和PCB的交互,很大程度上提高了画板子的效率。当然,现在学习的内容还是非常的基础,开学之后还需要学习更多的知识。

软件方面

进入实验室之后才发现,在做智能车的时候所用到的知识确实的非常的基础,假期开始从新建工程开始,了解了如何选择启动文件,知道了包含文件的名称及次序。

下面是我对串口通信的理解(参考《零死角玩转STM32》)

串口通信数据信号由发送设备的TXD接口传输到接收设备的RXD接口,二者之间要约定好波特率,常见的波特率为4800,9600,115200.有效数据的长度通常被约定为5,6,7,8位长。USART支持使用DMA,实现高速数据通信,假期任务四中就有DMA多通道采集电压,但是我不太能看懂USART功能框图,TX功能引脚是发送数据输出引脚,RX引脚是接收数据输出引脚,在正点原子的教程中了解SCLK引脚在后期可能会用到,现在应用范围较窄。(其他的引脚及其功能在trello中有详细的说明)

串口通讯协议简介

串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。
在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和
片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。简单来说物理层规定我们用嘴巴还是用肢体来交流,协议层则规定我们用中文还是英文来交流

USART 初始化结构体详解

标准库函数对每个外设都建立了一个初始化结构体,比如 USART_InitTypeDef,结构体成员用于设置外设工作参数,并由外设初始化配置函数,比如 USART_Init()调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。
初始化结构体和初始化库函数配合使用是标准库精髓所在,理解了初始化结构体每个
成员意义基本上就可以对该外设运用自如了。初始化结构体定义在stm32f10x_usart.h 文件中,初始化库函数定义在 stm32f10x_usart.c 文件中,编程时我们可以结合这两个文件内注
释使用。

初始化结构体代码如下

1
2
3
4
5
6
7
8
9
10
1 typedef struct 
2 {
3 uint32_t USART_BaudRate;// 波特率
4 uint16_t USART_WordLength;// 字长
5 uint16_t USART_StopBits;// 停止位
6 uint16_t USART_Parity;// 校验位
7 uint16_t USART_Mode;// USART 模式
8 uint16_tUSART_HardwareFlowControl;// 硬件流控制
}
9 USART_InitTypeDef;

USART 时钟初始化结构体

1
2
3
4
5
6
1 typedef struct {
2 uint16_t USART_Clock; // 时钟使能控制
3 uint16_t USART_CPOL; // 时钟极性
4 uint16_t USART_CPHA; // 时钟相位
5 uint16_t USART_LastBit; // 最尾位时钟脉冲
6 } USART_ClockInitTypeD

GPIO 和 USART 宏定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1 /**
2 * 串口宏定义,不同的串口挂载的总线和 IO 不一样,移植时需要修改这几个宏
3 */
4
5 // 串口 1-USART1
6 #define DEBUG_USARTx USART1
7 #define DEBUG_USART_CLK RCC_APB2Periph_USART1
8 #define DEBUG_USART_APBxClkCmd RCC_APB2PeriphClockCmd
9 #define DEBUG_USART_BAUDRATE 115200
10
11 // USART GPIO 引脚宏定义
12 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOA)
13 #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd
14
15 #define DEBUG_USART_TX_GPIO_PORT GPIOA
16 #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_9
17 #define DEBUG_USART_RX_GPIO_PORT GPIOA
18 #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_10
19
20 #define DEBUG_USART_IRQ USART1_IRQn
21 #define DEBUG_USART_IRQHandler USART1_IRQHandler

下面是看正点原子所做的笔记

学习STM32需要掌握库函数的基本配置方法。了解寄存器底层配置过程。基本外设包括GPIO输入输出,外部中断,定时器,串口。STM32最小系统包含供电复位时钟:外部晶振(两个),Boot启动模式选择,下载电路(串口/JTAG/SWD),后备电池。USB串口有以下三个作用:

1.可以当串口使用

2.如果USB串口连接到STM32的串口1(STM32ISP下载只能是串口1)的话,那么可以用串口下载程序

3.因为要连接到USB,所以可以用USB供电

(包含CH340驱动安装方法)

如何新建STM32工程模板在trello中有详细的说明