STM32之旅4——USART】的更多相关文章

STM32之旅4--USART 串口也是用的比较多的,在STM32CubeMX中生成代码后,需要添加一些代码才可以用. drv_usart.h: #ifndef __DRV_USART_H #define __DRV_USART_H #define USART1_MAX_LEN 64 //接收区长度 #define USART1_BUFF_CACHE_LEN 1 //接收缓冲区长度 extern uint16_t g_usart1_sta; //接收状态[1:15],最高位为接收完成标志 ext…
STM32之旅5--IWDG stm32有两个看门狗,一个独立看门狗(IWDG).一个窗口看门狗(WWDG):独立看门狗是时钟源是内部的40kHz的低速时钟,即使主频出问题了,独立看门狗也不会受到影响. 下面是使用独立看门狗需要了解的一些内容. hal库使用很简单,就只提供了两个函数:一个初始化函数.一个喂狗函数 喂狗: HAL_IWDG_Refresh(&hiwdg);…
STM32之旅3--时钟数 STM32F1是M3内核,它的时钟数很庞大,让一个初学者去看,估计会很吃力,和我们入门的8051单片机的时钟不同,这里又倍频.又分频,而且还分成好多个时钟,不同的外设时钟不一样. 总感觉不都明了,后来在STM32CubeMX中看到了时钟配置,这个看起来就明了多了…
STM32之旅2--按键     几乎每个项目都有用到按键,为了避免以后在做大项目的时候还在琢磨按键怎么写,现在写一个,方便以后使用.这里是最简单的独立按键驱动方法,和学习51单片机是的一样,更好的方法以后再慢慢补充. 按键驱动 drv_key.h: #ifndef __DRV_KEY_H #define __DRV_KEY_H #define RESET 0 #define SET 1 #define WK_UP_PIN GPIO_PIN_0 #define WK_UP_PORT GPIOA…
STM32之旅1--LED 学习了51单片机后,就要接触到更高级一点的单片机了,比如STM32,ST也有很多款单片机,现在用比较基础的学习--STM32F103RCT6. LED驱动 hal库的使用比较简单,可以直接在STM32CubeMX中分配好IO之后一键生成工程,为了提高程序的可读性,自己写一个头文件,在调用过程中会比较简单. drv_led.h: #ifndef __DRV_LED_H #define __DRV_LED_H #define LED1_PIN GPIO_PIN_8 #de…
学习是一个简单的过程,只要有善于发掘的眼睛,总能学到新知识,然而如何坚持不懈的学习却很困难,对我亦如此,生活中有太多的诱惑,最后只想说一句勿忘初心.闲话不多扯,本篇讲诉的是异步串行口的输入输出,串口在外设中属于比较简单的通讯模式,但是在大型项目调试中又十分重要,理解该外设模块对于以后的通讯协议学习以及软件调试都有重要意义. 通讯协议是指双方实体完成通信或服务所必须遵循的规则和约定,对于串口来说,包含波特率,数据位长度,停止位和数据校验位,当stm32芯片和客户端具有相同的协议约定时即能够正确的接…
1. 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用分数波特率发生器提供宽范围的波特率选择.它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作.它还允许多处理器通信.还可以使用DMA方式,实现高速数据通信. USART通过3个引脚与其他设备连…
使用 C++ 语言给 STM32 编写一个 Usart 类 我使用的STM32芯片:STM32F103ZET6 我们使用的STM32库版本:V3.5.0 注意: 想学习本套 STM32 C++编程 的专栏是有点门槛的.你需要有一点点 STM32 基础 和 一点点 C++ 语言基础. 完整的STM32 C++ Usart类 的下载地址可以在本篇博客的最下面找到. Usart.cpp #include "Usart.h" #include "Gpio.h" using…
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即"推荐标准"之意,它并不像 IEEE-1284.IEEE-1394 等标准,是由"委员会定制".因而,不同的厂商在做 RS232 时,多少会有不同,流控也都会存在差异.以下我们与大家一起探讨流控的作用.搭建及如何操作. 本文着重探讨硬件流控. 为什么需要流控? 数据在两个串口…
WWDG是stm32f103的窗口看门狗,使用的时钟是APB1的时钟,在使用wwdg是被一个小问题困扰了很久--没有打开中断,无法喂狗,一直复位. 初始化完之后需要使能中断: __HAL_WWDG_ENABLE_IT(&hwwdg, WWDG_IT_EWI); 在中断回调函数中喂狗: void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg) { HAL_WWDG_Refresh(hwwdg); }…