![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
STM32
文章平均质量分 67
STM32学习笔记及开发经验分享
_Amen
自律自由
展开
-
读取STM32芯片的唯一ID和MAC地址
每个STM32微控制器都自带一个96位的唯一ID,这个ID在任何情况下都是唯一且不允许修改的,这96位的ID可以以字节(8位)为单位读取,也可以以半字(16位)或全字(32位)读取。不同型号的STM32芯片首地址不同,UID首地址也不同。F1系列UID首地址——0x1ffff7e8F2和F4系列 ——0x1fff7a10F3和F0系列 ——0x1ffff7acF7系列 ——0x1ff0f420L0和L1系列 ——0x1ff80050L4系列原创 2021-02-19 10:01:52 · 6379 阅读 · 0 评论 -
STM32F4开发指南笔记49——MDK的编译过程及文件类型全解
1、编译过程1.1 编译过程简介首先简单了解下MDK的编译过程,它与其它编译器的工作过程是类似的,该过程见下图:编译过程生成的不同文件将在后面的小节详细说明,此处先抓住主要流程来理解。编译,MDK软件使用的编译器是armcc和armasm,它们根据每个c/c++和汇编源文件编译成对应的以“.o”为后缀名的对象文件(Object Code,也称目标文件),其主要内容是从源文件编译得到的机器码,包含了代码、数据以及调试使用的信息;链接,链接器armlink把各个.o文件及库文件链接成一个映像文件“原创 2021-02-18 08:24:05 · 1855 阅读 · 0 评论 -
STM32F4开发指南笔记48——FMC_扩展外部SDRAM
1、SDRAM控制原理STM32控制器芯片内部有一定大小的SRAM和FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了。STM32F429系列芯片扩展内存时可以选择SRAM(静态内存,上电无需初始化)和SDRAM(动态内存,上电需初始化),由于SDRAM的性价比比较高,即使用SDRAM要比SRAM划算的多。我们以SDRAM为例讲解如何为STM32扩展内存。给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展原创 2020-09-03 10:12:32 · 4874 阅读 · 1 评论 -
STM32F1开发指南笔记47——串口DMA更新字库到SPI FLASH
思路:1.在PC上生成字库文件GBK24.BIN(利用“彩色LCD屏点阵字库”软件自动生成)。2.上位机通过串口把GBK24.BIN文件传输至STM32的串口数据寄存器。3.DMA把串口数据寄存器中的数据传输至一个自定义的数组中。4.调用SPI FLASH的写接口,把数组中的数据写入SPI FLASH中。1.生成字库2.串口传输文件...原创 2020-09-01 16:47:36 · 1037 阅读 · 0 评论 -
STM32F1开发指南笔记46----字库原理及汉字库创建
随着液晶显示技术的发展和应用,越来越多的开发人员希望在自己开发的仪器中使用液晶屏幕来显示汉字,通常的汉字显示方式是:先根据所需要的汉字提取汉字点阵(譬如16x16点阵,24x24点阵等),将点阵文件存入ROM中,形成新的汉字编码;然后在使用时则先根据新的汉字编码组成语句,再由MCU根据新的编码提取相应的点阵进行汉字显示。就像我们之前在学习单片机的LCD外设时,要在LCD上显示一个汉字,先把一个汉字用字模软件转换成对应的点阵数据,然后把该点阵数据用一个数据保存在单片机的ROM中,在LCD显示的时候直接调用该数原创 2020-09-01 16:32:05 · 3519 阅读 · 2 评论 -
STM32F1开发指南笔记45----基于SD卡的文件系统FatFs
直接操作SD卡存储单元,在实际应用中是不现实的。SD卡一般用来存放文件,所以都需要加载文件系统到里面。类似于串行spi flash芯片,移植FatFs文件系统到SD卡内。对于FatFs文件系统的介绍和具体移植过程,参考前面的文章。本章重点放在SD卡与FatFs接口函数编写上。与串行flash的FatFs文件系统移植例程相比,FatFs文件系统部分的代码只有diskio.c文件有所不同,其他的不用修改,所以一个简易的移植方法是利用原来工程进行修改。下面讲解利用原来工程实现SD卡的FatFs文件系统。1、F原创 2020-08-13 17:16:57 · 2877 阅读 · 2 评论 -
STM32F1开发指南笔记44----SPI FLASH 文件系统FatFs多功能测试
上个实验我们实现了FatFs的格式化、读文件和写文件功能,这个已经满足很多部分的运用需要。有时,我们需要更多的文件操作功能,FatFs还提供了不少的功能,比如设备存储空间信息获取、读写文件指针定位、创建目录、文件移动和重命名、文件或目录信息获取等等功能。我们接下来这个实验内容就是展示FatFs众多功能,提供一个很好的范例,以后有用到相关内容,参考使用非常方便。本实验主要使用FatFs软件功能,不需要其他硬件模块,使用与FatFs移植实验相同硬件配置即可。上个实验我们已经移植好了FatFs,这个例程主要是原创 2020-08-13 10:36:12 · 1998 阅读 · 0 评论 -
STM32F1开发指南笔记43----SPI FLASH 移植文件系统FatFs
1、文件系统即使读者可能不了解文件系统,读者也一定对“文件”这个概念十分熟悉。数据在PC上是以文件的形式存储在磁盘中的,这些数据的形式一般为ASCII码或二进制形式。在上一章我们已经写好了SPI FLASH芯片的驱动函数,我们可以非常方便的在SPI FLASH芯片上读写数据。譬如我们需要记录一段文字,可以把这些文字转换成ASCII码,存储在数组中,然后调用SPI_FLASH_BufferWrite函数,把数组内容写入到SPI FLASH芯片的指定地址上,在需要的时候从该地址把数据读取出来,再对读出来的数据原创 2020-08-12 15:51:29 · 2891 阅读 · 3 评论 -
STM32F1开发指南笔记42----内存管理实验
使用STM32驱动外部SRAM,以扩展STM32的内存,加上STM32本身自带的64K字节内存,我们可供使用的内存还是比较多的。如果我们所用的内存都像上一节的testsram那样,定义一个数组来使用,显然不是一个好办法。本章,我们将学习内存管理,实现对内存的动态管理。内部40K + 外部960K1、内存管理简介内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配内存资源,并且在适当的时候释放和回收内存资源。内存管理的实现方法有很多种,他们其实最终都是要实现2原创 2020-08-11 17:30:43 · 481 阅读 · 0 评论 -
STM32F1开发指南笔记41----NRF24L01无线通信实验
战舰STM32F1开发板带有一个无线模块(WIRELESS)接口,采用8脚插针方式与开发板连接,可以用来连接NRF24L01/RFID等无线模块。本章以NRF24L01模块为例介绍如何在战舰开发板上实现无线通信。在本章中需要用到两块开发板,一块用于发送数据,一块用于接收数据,从而实现无线数据传输。1、NRF24L01无线模块简介开发板与开发板之间通过NRF24L01模块进行无线通信。NRF24L01模块与单片机之间通过SPI进行通信。main.c函数#include "led.h"#i原创 2020-06-22 17:05:13 · 2106 阅读 · 5 评论 -
STM32F1开发指南笔记40----DHT11温湿度传感器
上一章,介绍了数字温度传感器DS18B20的使用,本章介绍数字温湿度传感器DHT11的使用,该传感器不但能测温度,还能测湿度。本章将介绍如何使用STM32来读取DHT11数字温湿度传感器,从而得到环境温度和湿度等信息,并把温湿度值显示在TFTLCD模块上。1、DHT11简介main.c函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "lcd.h"#include "usart.原创 2020-06-19 11:45:47 · 2209 阅读 · 3 评论 -
STM32F1开发指南笔记39----DS18B20温度传感器
STM32虽然内部自带了温度传感器,但是因为芯片温升较大等问题,与实际温度差别较大,所以,本章我们介绍如何通过STM32来读取外部数字温度传感器的温度,来得到较为准确的环境温度。在本章中,将学习使用单总线技术,通过它来实现STM32和外部数字温度传感器(DS18B20)的通信,并把从温度传感器得到的温度显示在TFTLCD模块上。main.c函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#inclu原创 2020-06-19 10:54:23 · 945 阅读 · 3 评论 -
STM32F1开发指南笔记38----游戏手柄实验
相信80后小时候都玩过FC游戏机(又称:红白机/小霸王游戏机),那是一代经典,给童年带来了无限乐趣。本章,介绍如何通过STM32来驱动FC游戏机手柄,将FC游戏机的手柄作为战舰STM32开发板的输入设备(综合实验可以直接通过这个手柄来玩FC游戏)。main.c函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "lcd.h"#include "usart.h"#include "原创 2020-06-18 11:30:21 · 3184 阅读 · 2 评论 -
STM32F1开发指南笔记37----红外遥控器
本章,介绍如何通过STM32来解码红外遥控器的信号。战舰STMF103标配了红外接收头和一个很小巧的红外遥控器。在本章中,将利用STM32F1的输入捕获功能,解码开发板标配的这个红外遥控器的编码信号,并将解码后的键值在TFTLCD模块上显示出来。1、红外遥控简介红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以原创 2020-06-17 12:03:24 · 1281 阅读 · 1 评论 -
STM32F1开发指南笔记36----触摸屏
本章,介绍如何使用STM32F1来驱动触摸屏,战舰STM32F103本身并没有触摸屏控制器,但是它支持触摸屏,可以通过外接带触摸屏的LCD模块(比如TFTLCD模块),来实现触摸屏控制。在本章中,将向大家介绍STM32控制战舰TFTLCD模块(包括电阻触摸和电容触摸),实现触摸屏驱动,最终实现一个手写板的功能。1、触摸屏介绍目前最常用的触摸屏有两种:电阻式触摸屏与电容式触摸屏。下面,分别介绍。1.1 电阻式触摸屏在iPhone面世之前,几乎清一色的都是使用电阻式触摸屏,电阻式触摸屏利用压力感应进行触原创 2020-06-16 12:27:00 · 2808 阅读 · 0 评论 -
STM32F1开发指南笔记35----RS485
RS485与RS232和TTL的区别RS485传输距离远、抗干扰能力强,两个485设备必须A连接A,B连接B485设备的连接485设备挂载在两根双绞线上,起止设备必须接两个电阻,防止通信不稳定。484通信采用的芯片SP3485单片机通过SP3485转换芯片把数据发送给RS485,然后传输给另一个开发板的RS485经SP3485转换芯片转换后再传输给单片机,以此实现两个单片机长距离的稳定通信。main函数#include "led.h"#include "delay.h"#in原创 2020-05-28 13:42:20 · 903 阅读 · 0 评论 -
STM32F1开发指南笔记34----SPI协议
本章介绍STM32F1的SPI功能,利用STM32F1自带的SPI来实现对外部FLASH(W25Q128)的读写,并将结果显示在TFTLCD模块上。main函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "lcd.h"#include "usart.h" #include "w25qxx.h" //要写入到W25Q64的字符串数组const u8原创 2020-05-26 21:58:17 · 648 阅读 · 1 评论 -
STM32F1开发指南笔记33----IIC协议
本章介绍如何利用STM32F1的普通IO口模拟IIC时序,实现和24C02(eeprom)之间的双向通信,并将读写结果显示在TFTLCD模块上。IIC物理层IIC通信设备常用的连接方式:它的物理层有如下特点:它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C通讯设备,支持多个通讯主机及多个通讯从机。一个 I2C总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步原创 2020-05-23 14:39:39 · 833 阅读 · 1 评论 -
STM32F1开发指南笔记32----DMA
本章介绍STM32F1的DMA。在本章中,我们将利用STM32F1的DMA来实现串口数据传送,并在TFTLCD模块上显示当前的传送进度。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程。DMA通过硬件为RAM与IO设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。DMA简介main函数#include "led.h"#include "dela原创 2020-05-22 11:24:34 · 1292 阅读 · 0 评论 -
STM32F1开发指南笔记31----PWM DAC实验
上一章介绍了STM32F1自带的DAC模块的使用。但有时候,可能两个DAC不够用,我们可以通过PWM+RC滤波来实现一个PWM DAC。本章将向大家介绍如何利用STM32的PWM来设计一个DAC。利用按键(USMART)控制STM32的PWM输出,从而控制PWM DAC的输出电压,通过ADC1的通道1采集PWM DAC的输出电压,并在LCD模块上面显示ADC获取到的电压值以及PWM DAC的设定输出电压值等信息。main函数#include "led.h"#include "delay.h"原创 2020-05-14 19:37:33 · 530 阅读 · 0 评论 -
STM32F1开发指南笔记30----DAC实验
上两章介绍了STM32的ADC的使用,本章介绍STM32的DAC功能。本章利用按键(或者USMART)控制STM32内部DAC模块的通道1来输出模拟电压,通过ADC1的通道1采集DAC的输出电压,在LCD模块上面显示ADC获取到的电压值以及DAC的设定输出电压值等信息。DAC本身是输出,但是为什么端口要设置为模拟输入模式呢?因为一旦使能DACx通道之后,相应的GPIO引脚(PA4或者PA5)会自动与DAC的模拟输出相连,设置为输入,是为了避免额外的干扰。硬件设计main函数#原创 2020-05-14 17:58:52 · 1601 阅读 · 0 评论 -
STM32F1开发指南笔记29----光敏传感器实验
本章介绍STM32F103自带的一个光敏传感器,本章还是用到ADC采集,通过ADC采集电压,获取光敏传感器的电阻变化,从而得出环境光线的变化,并在TFTLCD上面显示出来。光照越强,电压越小,光照越弱,电压越大。光敏传感器简介光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管、光电倍增管、光敏电阻、光敏三极管、太阳能电池、红外线传感器、紫外线传感器、光纤式光电传感器、色彩传感器、CCD和CMOS图像传感器等。光传感器是目前产量最多、应用最广的传感器之一,它在自动控制和非电量电测技术中占有非常原创 2020-05-10 18:25:38 · 9620 阅读 · 6 评论 -
STM32F1开发指南笔记28----STM32F1内部温度传感器
本章介绍STM32F1的内部温度传感器,利用STM32F1的内部温度传感器来读取温度值,并在TFTLCD模块上显示出来。STM32有一个内部温度传感器,可以用来测量CPU及周围的温度。该温度传感器在内部和ADCx_IN16输入通道相连接,激活温度传感器后,读取通道16的值就是温度传感器返回来的电压值,再根据公式则可计算出温度值。测得的温度值与实际会有一点误差,因为芯片会发热,一般会比实际温度稍高一些。main函数#include "led.h"#include "delay.h"#incl原创 2020-05-10 16:12:26 · 1692 阅读 · 0 评论 -
STM32F1开发指南笔记27----ADC采集电压值实验
本实验利用STM32F1的ADC1通道1来采样外部电压值,并在TFTLCD模块上显示出来。ADC的转换分为:规则通道组(最大16个通道)、注入通道组(最多4个通道)。注入通道组能打断规则通道组的转换,类似于中断。程序设计在初始化阶段先分别设置好不同的转换组,能提高效率。main函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "lcd.h"#includ原创 2020-05-09 17:49:15 · 4038 阅读 · 1 评论 -
STM32F1开发指南笔记26----步进电机
步进电机应用场景:打印机、智能打印机、机器人…1、步进电机2、直流电机直流电机上电就开始工作,固定朝着一个方向转动,转动的频率与电流和负载有关,电流越大负载越小,则转动速度越快。应用于不需要精密控制的地方,例如电风扇等。3、五线四相步进电机内部原理COM端是其他4端的公共端,只要给COM端一个高电平(类似共阳接口),其余端给一个低电平即可导通产生磁性吸引永磁铁。4、四拍,转动一次角...原创 2020-04-26 22:27:28 · 2219 阅读 · 0 评论 -
STM32F1开发指南笔记25----继电器
1、实物图2、继电器是什么3、手动开关4、继电器开关当2个XQ引脚通电时,(电磁感应定律)电磁铁会产生磁,从而吸附上面的衔铁向下,下面的CK常开电路导通。单片机可以直接驱动2个XQ引脚(单片机输出的电流较小),也可以借助驱动电路(ULN2003或者三极管)来驱动XQ引脚,经过ULN2003可以输出较大的电流。5、原理图2个XQ引脚接在P26端子上,然后连接ULN2003,输出...原创 2020-04-26 17:36:13 · 4333 阅读 · 4 评论 -
STM32F1开发指南笔记24----待机唤醒实验
代码流程系统上电时默认进入待机模式,程序卡在唤醒键初始化。当按住唤醒键后系统会重新从main函数开始执行程序,当再次判断Check_WKUP()函数的返回值时,如果按住3S则返回1,不会再进入待机模式,而是进入了正常模式,接着向下执行程序。正常模式->待机模式:(先执行中断服务函数)正常模式下,当再次按住唤醒键时,会触发外部中断,中断服务函数中:如果按住没超过3S,则直接清中断标志然后...原创 2020-04-24 22:24:04 · 1339 阅读 · 2 评论 -
STM32F1开发指南笔记23----USMART 调试组件
本章介绍一个十分重要的辅助调试工具:USMART调试组件。功能类似Linux的shell(RTT的finsh也属于此类)。USMART最主要的功能就是通过串口调用单片机里面的函数,并执行,对我们调试代码是很有帮助的。由于 USMART 默认提供了 STM32 的 TIM4 中断初始化设置代码,我们只需要在 usmart.h里面设置 USMART_ENTIMX_SCAN 为 1,即...原创 2020-04-22 22:57:37 · 697 阅读 · 0 评论 -
STM32F1开发指南笔记22----TFTLCD显示
LCD需要背光显示,因此需要打开背光线。TFTLCD可以当成SRAM来使用,因此可以用FSMC来管理。LCD液晶显示器FSMC(灵活的静态存储控制器)LCD初始化步骤main函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"...原创 2020-04-21 21:20:52 · 1253 阅读 · 0 评论 -
STM32F1开发指南笔记21----旋转编码器
之前学过机械按键与电容式触摸按键,均可以用来调节数值大小。在某些需求中,譬如需要快速调节音量数值大小或速度数值大小等,此时用按键方式则十分麻烦。于是引入了旋转编码器这种器件,可以快速调节数值大小,在工业领域较常应用。开发板接线实物图旋转编码器共有3种操作:逆时针旋转、顺时针旋转、向下按旋转是有格段的,每旋转一个格段,大小加一或减一。按下旋转编码器时清零。原理图与模拟量摇杆共用三个...原创 2020-04-20 23:17:10 · 4419 阅读 · 2 评论 -
STM32F1开发指南笔记20----数码管驱动芯片TM1640解析
以前在单片机学习中,驱动数码管是直接将数码管连接单片机,在单片机上需要编写很复杂的程序,并且对数码管需要实时扫描。在实际项目开发中,一般使用数码管专用控制芯片来驱动数码管,提高开发效率。TM1640是一种LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。主要应用于电子产品LED显示屏驱动。采用SOP28封装形式。TM1640只是数码管驱动芯片的一...原创 2020-04-20 20:49:33 · 17016 阅读 · 5 评论 -
STM32F1开发指南笔记19----按键高级用法——单击、双击、长按、滑动
按键分为机械按键和(电容式/电阻式)触摸按键。机械按键需要消抖操作,触摸按键灵敏度高可以不进行消抖处理。按键单击属于常规操作,而双击和滑动如何实现呢?双击判断:在按键按下并松开后,在一段规定的时间内,判断按键是否再次按下,如果再次按下,即属于双击操作,注意这段规定的时间较短(几十几百毫秒)。长按判断:按键按下并维持一段规定的时间,即可判断是长按操作,注意这段规定的时间较长(几秒)。滑...原创 2020-04-19 16:26:58 · 1770 阅读 · 0 评论 -
STM32F1开发指南笔记18----OLED显示实验
LCD需要背光。OLED自发光,不需要背光,显示效果更好。main函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "oled.h" int main(void) { u8 t; delay_init(); //延时函数初始化 ...原创 2020-04-17 17:28:08 · 2890 阅读 · 0 评论 -
STM32F1开发指南笔记17----定时器输入捕获——触摸按键实验
上一章,我们介绍了定时器的输入捕获功能及其使用。这一章,我们将介绍如何通过输入捕获功能,来做一个电容触摸按键。在本章中,将用TIM5的通道2(PA1)来做输入捕获,并实现一个简单的电容触摸按键,通过该按键控制DS1的亮灭。A是没有触摸时,B是有触摸时。main函数#include "led.h"#include "delay.h"#include "key.h"#include ...原创 2020-04-15 22:44:38 · 900 阅读 · 0 评论 -
STM32F1开发指南笔记16----定时器——输入捕获实验
上一章介绍了通用定时器作为PWM输出的使用方法,这一章,介绍通用定时器作为输入捕获的使用。用TIM5的通道1(PA0)来做输入捕获,捕获PA0上高电平的脉宽(用WK_UP按键输入高电平),通过串口打印高电平脉宽时间。定时器3用作PWM输出控制指示灯DS0,定时器5用作输入捕获来捕获WK_UP按键按下的高电平时长并通过串口打印出时长。main函数#include "led....原创 2020-04-14 22:37:01 · 686 阅读 · 0 评论 -
STM32F1开发指南笔记15----定时器产生PWM输出——呼吸灯2
main函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "usart.h"#include "timer.h" int main(void) { u16 led0pwmval=0; u8 dir=1; delay_init(); /...原创 2020-04-12 21:51:13 · 711 阅读 · 0 评论 -
STM32F1开发指南笔记14----定时器中断
操作通用定时器的编程步骤:定时器TIMx时钟使能初始化定时器(设置自动重装值,分频系数,计数方式等)设置TIMx_DIER允许更新中断定时器TIMx中断优先级设置允许定时器TIMx工作,也就是使能TIMx编写中断服务函数STM32通用定时器简介main函数#include "led.h"#include "delay.h"#include "key.h...原创 2020-04-11 20:56:08 · 1069 阅读 · 0 评论 -
STM32F1开发指南笔记13----IWDG独立看门狗 & WWDG窗口看门狗
main函数#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "usart.h"#include "wdg.h" int main(void) { delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(N...原创 2020-04-10 22:12:51 · 338 阅读 · 0 评论 -
STM32F1开发指南笔记12----exti外部中断
main函数#include "stm32f10x.h"#include "led.h"#include "delay.h"#include "key.h"#include "sys.h"#include "usart.h"#include "exti.h"#include "beep.h" int main(void) { delay_init(); ...原创 2020-04-08 11:53:15 · 621 阅读 · 0 评论 -
STM32F1开发指南笔记11----串口&RTC----超级终端显示日历
通过串口1将RTC实时时钟数据发送到电脑串口调试助手上,并可在串口调试助手上输入数据与单片机通信。main函数#include "stm32f10x.h" #include "sys.h"#include "delay.h"#include "led.h"#include "key.h"#include "usart.h"#include "rtc.h"int main (vo...原创 2020-04-07 22:01:21 · 1553 阅读 · 1 评论