![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
走出地球
人类的未来在无垠的宇宙,那我们就一步一步的走出地球。
展开
-
STM32中的数据类型
(一)C语言中的种类数据整型:int short long实型:float double(二)STM32中的数据类型非常的多,常用的变量,文件中的定义如下:/* exact-width signed integer types */typedef signed char int8_t;typedef signed short int int16_t;typedef signed int int32_t;typedef signe原创 2021-08-27 14:10:36 · 4368 阅读 · 0 评论 -
Keil5 点击Debug Setting 软件崩溃解决方法
因为我我打开另外一个程序是可以仿真的,所以没有考虑keil5软件自身的问题。1、有中文路径,然后剪切到没有中文路径的文件夹——>未解决2、打开注册表Win+R键呼出“运行”,在框内输入“Regedit ”,回车打开注册表。如果弹出“是否允许此应用对你的计算机进行更改”的权限提示,选择“是”在注册表中,找到并进入HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers若发现有形如下原创 2021-08-23 12:07:20 · 5231 阅读 · 1 评论 -
STM32的复位方式:硬件复位、软件复位(看门狗复位和系统复位)
STM32的复位方式:硬件复位、看门狗复位和系统复位。**1.硬件复位:**硬件复位通过给NRST引脚输入低电平复位单片机。**2、看门狗复位:**独立看门狗和窗口看门狗。(1)独立看门狗STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即主时钟发生故障,它也仍然有效,这里我们需要注意独立看门狗的时钟不是准确的40Khz,二是在30~60Khz之间变化的一个时钟,只是我们估算以40Khz来计算,看门狗对时间要求不是很青雀,时钟有点偏差还是可以接受的。1.2.1工作原理:****原创 2021-05-18 16:36:13 · 41886 阅读 · 10 评论 -
STM32串口中断程序-迪文屏,
STM32串口中断程序-迪文屏,串口接收准确数值这几天一直在做原子开发板与迪文屏的通信,开发板向迪文屏写数据已经完成,但是从迪文屏读的数据总是无法返回开发板。原始及调试程序见下图:在串口接收到从dwin屏返回的相应9位数据,通过序号1的方式,一次次利用函数TX_TEST();进行测试。最后得出结论是由于for()循环语句。在串口中断中,是无法进入for循环的。原因不明。问题2:RX_buf[2]==0x06;但是赋值到TX_writetest[7],输出值变为90,这个原因是什么呢?当上图中1序原创 2021-05-14 18:22:13 · 2580 阅读 · 6 评论 -
STM32如何利用串口发送接收数据
STM32如何利用串口发送接收数据?我现在计划利用STM32F103X的串口对迪文屏发送及接收数据。手中硬件:正点原子开发板(旗舰版),迪文屏(4.3寸),电脑软件:MCU程序下载:FLYMCU;串口助手:XCOM;迪文屏配置:DGUS TOOL V7.6231、我先利用正点原子向串口助手发送数据:(1)发送单字节利用正点原子开发板自己程序就可以实现了。点击“发送”后,单字符“a”会发送到开发板的MCU中,然后又重新发送到XCOM中。但是有时候点击发送后,字符“a”未重新发回来。只有当原创 2021-05-13 18:03:58 · 18384 阅读 · 12 评论 -
keil5的源文件汇中出现红色波浪线
将源文件中的问题Edit --> configuration --> Text Completion把红色圈圈的勾去掉,然后把ENTER/TAB as fill-up character勾上就行。后面试了一下还是有的。然后编译程序,然后把程序保存。关掉程序重新打开,就没有了。## 关于KEIL5编译没有问题但是出现红色波浪线的解决办法————————————————原文链接:https://blog.csdn.net/qq_38857275/article/details/105753.原创 2021-05-10 18:08:41 · 3956 阅读 · 0 评论 -
keil5源文件中的函数前缺少压缩符“-”
这是更改之后的结果。更改前整个源文件“uart_dwin.c”中的函数前无压缩符“-”。解决方法:hardware文件夹汇总将源文件“uart_dwin.c”与头文件“uart_dwin.h”的文件名改为大小写一致。将KEIL5的hardware列表中的“uart_dwin.c”文件删除,再重新添加。...原创 2021-05-08 14:40:35 · 523 阅读 · 0 评论 -
STM32之AFIO
STM32之AFIO也许你以为IO和AFIO是很简单的,事实上有几个误区可能很多人都没注意过,当你只用现成的开发板来学习的时候,别人已经帮你做好了资源分配,所有的外设功能学习都是照着别人给你的例程去做的,这才没让你觉得奇怪。先问自己一个问题:STM32中,USART2和TIM2是共用相同IO的,你如何决定这几个IO到底是做USART2还是做TIM2呢?如果你要同时使用USART2和TIM2,该怎么办?1、不是说使用了IO的复用功能就一定要启动RCC_APB2Periph_AFIO的Clock的,参考下原创 2021-04-07 18:18:24 · 3039 阅读 · 6 评论 -
下载调试接口 SWD 和 JTAG的区别
下载调试接口 SWD 和 JTAG的区别作为嵌入式软件工程师,下载调试器都应该知道,但你真正了解其SWD 和 JTAG接口的含义和区别吗?I 什么是下载调试器简单来说,下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备)理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。II 调试器协议标准1.什么是标准?简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。2.调试器协议混乱现象在SWD和JTAG之类的协议出现之前,调转载 2021-04-06 12:00:21 · 1181 阅读 · 0 评论 -
..\OBJ\PRESSURE_SYSTEM.axf: Error: L6218E: Undefined symbol FLASH_ErasePage (referred from flash.o).
在keil5中编译时报错:解答:而我犯了第二个错误,没有添加.c文件。原创 2021-01-30 16:12:31 · 1340 阅读 · 0 评论 -
..\CORE\core_cm3.h(1569): error: #20: identifier “IRQn_Type“ is undefined
今天在用keil5编译的时候出现了这个错:…\CORE\core_cm3.h(1569): error: #20: identifier “IRQn_Type” is undefined;点到后,直接链接到core_cm3.h中的。网上搜索后,都是说因为没有加#include “stm3210x.h”,然后我就把#include "stm3210x.h"加到了core_cm3.h中。结果依然没有变化。最后我将#include "stm3210x.h"加到我正在写的flash.h的头文件中,这个错误就.原创 2021-01-30 15:05:17 · 2394 阅读 · 0 评论 -
error in include chain(stm32f10x.h)
用keil5,在cm3_core.h添加#include "stm32f10x.h"后,这里报错:error in include chain(stm32f10x.h)。删除后就恢复正常了。注:这里的core_cm3.h头文件的编写有问题的。应该是#ifndef __CORE_CM3_H#define __CORE_CM3_H而不应该是图上的。...原创 2021-01-30 14:44:31 · 8576 阅读 · 2 评论 -
STM32——SPI串口外设接口通讯协议
1、什么是SPI?SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。2、SPI优点支持全双工通信通信简单数据传输速率块3、缺点没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。4、特点1):高速、同步、全双工、非差分、总线式2):主从机通信模式5、协议通信时序详解1):SPI的通信原理很简单,它以主从方原创 2020-12-16 16:04:41 · 677 阅读 · 0 评论 -
STM32中的通信协议
STM32中的通信协议通讯协议是指在嵌入式开发中,不同的硬件系统或者操作系统之间进行数据交换的方式,是一种数据通讯的规约。通讯协议有很多种,而我今天要说的是串口通讯协议,而且是基于STM32来说的。首先说串口通信,串口是单片机最常见的外设。常见的UART串口主要有两个线,一个线是发送、一个是接收。至于串口发送数据的时候数据线上的高低电平是怎么变化的,这个大家可以自行查阅相关知识,我们常见的单片机自带的串口已经把这个最底层的电平级别的协议做好了,我们使用的时候,收发都是以一个字节为单位来进行的。举个例原创 2020-12-09 17:00:09 · 8636 阅读 · 0 评论 -
STM32-SRAM地址线的连接
在嵌入式系统设计过程中,由于主控芯片(如ARM、PPC、MIPS等)片上的存储空间不够大,经常需要外接存储器芯片(如ROM、SRAM、SDRAM、DDR2、Nand Flash等),因此,弄清楚主控芯片与外界存储芯片的引脚连接原理至关重要,由于Nand Flash的引脚连接比较简单,不涉及地址线的连接,而SDRAM和DDR2访问原理与ROM和SRAM有一些不同,故以后再专门讲述,这里我将主要介绍ARM与ROM、SRAM这两种存储芯片的连接。 首先,我们看一个电路图。这个电路图为三星公司的ARM芯片s原创 2020-11-30 18:03:32 · 1760 阅读 · 0 评论 -
STM32-SRAM静态随机存取存储器
静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。基本简介编辑SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Ac原创 2020-11-25 11:06:56 · 2012 阅读 · 0 评论 -
STM32——FSMC功能
在学习正点原子关于TFT-LCD的章节时,介绍了使用FSMC功能控制LCD,所以对FSMC进行了解,为什么要使用FSMC,利用FSMC有什么好处等等。FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。机制编辑FSMC(Flexible Static Memory Controller,可变静态存储控制器)是S原创 2020-11-25 10:51:56 · 2596 阅读 · 0 评论 -
stm32串口USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口、流控的定义。RS232 中的“RS”是Recommend Standard 的缩写,即”推荐标准“之意,它并不像 IEEE-1284、IEEE-1394 等标准,是由“委员会定制”。因而,不同的厂商在做 RS232 时,多少会有不同,流控也都会存在差异。以下我们与大家一起探讨流控的作用、搭建及如何操作。为什么需要流控?数据在两个串口之间进行通讯的时候常常会出现丢失数据的现象,比如两台计算机或者是一台计算机和一个单片机之间进行通讯,原创 2020-11-18 17:22:22 · 2685 阅读 · 0 评论 -
STM32用keil MDK新建工程
本人也是接触stm32没多久,之前用的MDK是5.1,现在用的是5.13,MDK5.0之前的版本(本人简称旧版)和之后的版本(本人简称新版)新建工程有很大区别。对于刚开始用学stm32的新手来说,基本上stm32 的视频教程,都是使用的旧版MDK,如果新手直接安装的是新版的MDK的话,往往总是会有一些困惑。 本人深有作为新手刚入手MDK5.13时新建工程的困惑感受,特地发了该贴,以图文并茂的方式,详述了MDK5.13新建工程的步骤,只希望大家一起分享、学习,若有不足之处,望各位大大指正,谢谢!1、原创 2020-11-17 11:37:20 · 1775 阅读 · 0 评论 -
通讯协议
关于通信协议相信大家应该看到很多,比如比较常用的:单线协议,IIC协议,spi协议,串口协议,modbus协议,TCP/IP协议。232协议,485协议等等还有很多的协议。大家可能有很多疑问,到底是什么是协议,它具体的作用是什么。对于要了解一个我们应该怎么来学习和使用呢!要了解这些,要有一个对“协议层(个人想来命名的)”的认识,关于“协议层”都是一层一层叠加上去的,我们就来具体分析下。认识通信协议,通信是交换数据的,数据的构成单位就是bit,byte,frame(帧),数据包,数据信息。通信传输的就是二原创 2020-11-16 15:26:11 · 330 阅读 · 0 评论 -
C语言的条件语句在STM32中的应用
此程序是对串口接收到的数据进行的保存,来源于正点原子。void USART1_IRQHandler(void) //串口1中断服务程序{u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res =USART_ReceiveData(USART1); //读取接收到的数据 if((USART_RX_STA&0x8000原创 2020-11-16 10:59:09 · 1415 阅读 · 0 评论 -
STM32中文参考手册2.2存储器组织中提到“小端格式”
大端格式、小端格式大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示:图2.1小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图2.2所示:图2.2有时候,用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地原创 2020-11-13 16:55:32 · 167 阅读 · 0 评论 -
STM32-MDK: Error: L6915E: Library reports error: __use_no_semihosting was requested,
在编译程序是报错:…\OBJ\test_program.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but a semihosting fputc was linked in…解决方案:(取自正点原子)在usart.c文件中增加下面这段儿程序://加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1#pragma import(__use_no_sem原创 2020-11-13 09:38:15 · 4982 阅读 · 0 评论 -
STM32变量存储到FLASH中
1、使用FLASH的原因我在使用STM32F103CRT6开发产品的过程中,考虑到客户在使用过程中需要自己设定的模式、定时时长、压力值。而这些值在客户使用产品一段儿时间后,这些值设定后就不会再重复设定。所以需要将客户使用过程中自己设定的模式值、定时时长、压力值保存下来,从而可以重复利用。2、我利用的是正点原子和洋桃电子的开发板以及资料:3、基础知识:flash分页地址。4、数据保存过程:(1)解锁FLASH编程擦除控制器 ;(2)清除标志位;(3)擦除指定地址页;(4)从指定页的addr原创 2020-09-25 15:18:44 · 5732 阅读 · 0 评论 -
STM32编译时出现creating preprocessor file for .c...
1、解决方案原创 2020-08-28 13:45:25 · 650 阅读 · 2 评论 -
STM32软件调试logic Analyzer-单步执行main()程序
1、开始运行2、停止运行3、准备单步运行4、先从延时程序delay_ls()中跳出,再单步执行。原创 2020-08-25 15:02:12 · 507 阅读 · 0 评论 -
STM32进行软件调试步骤:
STM32进行软件调试步骤:1、点击设置2、修改晶振为“8.0”3、点击“Debug”4、点击“确定”5、点击“调试”图标6、对调试内容进行设置,根据个人要求习惯设置,此处只留下“逻辑分析窗口”,可观察端口输出的高低电平转换。7、对端口进行设置,对显示图形进行调节...原创 2020-08-24 17:30:43 · 5663 阅读 · 0 评论 -
STM32软件调试时,示波器(Logic Analyzer)不能连续运行
1、启动软件调试,开始运行2、将“Update Screen”的stop改为start:3、等待一段儿时间后,再重新点击start改为stop,可观察端口输出电平波形图出现。4、现在的问题是,如何连续的观察端口输出电平波形图5、可达到连续的端口输出电平波形图...原创 2020-08-24 17:09:09 · 640 阅读 · 0 评论 -
STM32调试过程中出现的问题1:
STM32调试过程中出现的问题1:…\HARDWARE\KEY\key.c(47): error: #29: expected an expressionif(key_up&&(KEY00))||KEY10||WK_UP1))…\HARDWARE\KEY\key.c(55): warning: #12-D: parsing restarts here after previous syntax errorelse if(KEY01&&KEY11&&原创 2020-08-24 11:04:16 · 1740 阅读 · 0 评论 -
STM32里面说的推挽输出
推挽输出是指既可以输出低电平,也可以输出高电平,可以直接驱动功耗不大的数字器件。推挽电路是由两个三极管或MOSFET,以推挽方式存在于电路中,电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高、既提高电路的负载能力,又提高开关速度。当内部输出1电平时,上边的MOS管导通同时下边的MOS管截至,IO口输出高电平。当内部输出0电平时,上边的MOS管截至同时下边的MOS管导通,IO口输出低电平。解释2:从逻辑上来说和继电器输出没什么区别,就是输出低电平...原创 2020-07-08 10:56:11 · 4905 阅读 · 0 评论 -
STM32菜鸟学习手册-底层架构
整理了一下STM32相关的底层结构,有助于消化理解先上几张图片(主要参照STM3210x系列)1.芯片结构组成图:2.STM32内部结构:3.Cortex-M3模块结构图:4.STM3210X内部结构:桥:四个主动单元 :M3内核的ICode总线(I-bus)、DCode总线(D-bus)、 系统总线(S-bus)、DMA(DMA1、DMA2、以太网DMA)四个被动单元 :内部SRAM、内部闪存、FSMC、AHB到APB桥ICode总线 :将M3内核的指令总线与FLASH指原创 2020-06-18 15:45:59 · 1693 阅读 · 0 评论 -
STM32菜鸟学习手册-DMA
DMA有什么用? 直接存储器存取用来提供在 外设和存储器 之间或者 存储器和存储器 之间的高速数据传输。无须CPU的干预,通过DMA 数据可以快速地移动。这就节省了CPU的资源来做其他操作。有多少个DMA资源? 有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。数据从什么地方送到什么地方? 外设到SRAM(I2C/UART等获取数据并送入SRAM); SRAM的两个区域之间; 外设到外设(ADC读取数据后送到TIM1控制其产生不同的PWM占空比);原创 2020-06-18 15:19:37 · 207 阅读 · 0 评论 -
STM32菜鸟学习手册——AMBA、APB、AHB简介
STM32菜鸟学习手册——1、AMBA、APB、AHB简介芯片上总线标准种类繁多,而由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。二者分别适用于高速与相对低速设备的连接。 首先,说点不靠谱的,APB和AHB总线,我个人感觉这个类似于个人PC系统里的北桥和南桥总线。南桥原创 2020-06-18 15:09:58 · 822 阅读 · 0 评论