- 博客(49)
- 收藏
- 关注
原创 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
4409
原创 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
5277
1
原创 STM32的复位方式:硬件复位、软件复位(看门狗复位和系统复位)
STM32的复位方式:硬件复位、看门狗复位和系统复位。**1.硬件复位:**硬件复位通过给NRST引脚输入低电平复位单片机。**2、看门狗复位:**独立看门狗和窗口看门狗。(1)独立看门狗STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即主时钟发生故障,它也仍然有效,这里我们需要注意独立看门狗的时钟不是准确的40Khz,二是在30~60Khz之间变化的一个时钟,只是我们估算以40Khz来计算,看门狗对时间要求不是很青雀,时钟有点偏差还是可以接受的。1.2.1工作原理:****
2021-05-18 16:36:13
42228
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
2591
6
原创 C语言中的&&符号用法
在用KEIL5进行编程时,发现这些问题:if((RX_buf[5]==FUNCSTOP)&&(RX_buf[5]==0x01))&&是逻辑运算符,表示逻辑与;&是位运算符,表示按位与。1 & 2 = 0 // 条件判断为假1 && 2 = 1 // 此时条件判断为真...
2021-05-14 15:09:32
7731
原创 STM32如何利用串口发送接收数据
STM32如何利用串口发送接收数据?我现在计划利用STM32F103X的串口对迪文屏发送及接收数据。手中硬件:正点原子开发板(旗舰版),迪文屏(4.3寸),电脑软件:MCU程序下载:FLYMCU;串口助手:XCOM;迪文屏配置:DGUS TOOL V7.6231、我先利用正点原子向串口助手发送数据:(1)发送单字节利用正点原子开发板自己程序就可以实现了。点击“发送”后,单字符“a”会发送到开发板的MCU中,然后又重新发送到XCOM中。但是有时候点击发送后,字符“a”未重新发回来。只有当
2021-05-13 18:03:58
18451
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
3999
原创 keil5源文件中的函数前缺少压缩符“-”
这是更改之后的结果。更改前整个源文件“uart_dwin.c”中的函数前无压缩符“-”。解决方法:hardware文件夹汇总将源文件“uart_dwin.c”与头文件“uart_dwin.h”的文件名改为大小写一致。将KEIL5的hardware列表中的“uart_dwin.c”文件删除,再重新添加。...
2021-05-08 14:40:35
530
原创 迪文屏学习笔记
因为要做产品,需要用到触摸屏,然后从迪文申请了一块儿试验屏(4.3寸)。因为迪文屏学习的时间十分琐碎,并且现在也还在学习,所以就把我学习的过程记录下来,大家一起进步。我当前只是在学习使用串口,没有用到迪文的OS。1、硬件连接:排线的连接方向都是蓝色向外。SD卡的卡槽,与USB延长线的连接我就不上图了。USB转串口,在USB接在PC机后,会自动安装驱动,如果不能够更新的,可以自己网上找,也可以找迪文的业务员。有任何不懂,或者不方便的都可以找迪文的业务经理,很尽职。迪文屏的规格:竖屏、480*80
2021-04-23 17:40:41
3492
2
原创 关于保险丝的慢断和快断的差别和区分?
慢断和快断的差别和区分? 慢速保险丝也叫延时保险丝,它的延时特性表现在电路出现非故障脉冲电流时保持完好而能对长时间的过载提供保护。有些电路在开关瞬间的电流大于几倍正常工作电流,尽管这种电流峰值很高,但是它出现的时间很短,我们称它为脉冲电流也有称它为冲击电流或叫它为浪涌电流。普通的保险丝是承受不了这种电流的,这样的电路中若使用的是普通保险丝恐怕就无法正常开机了,若使用更大规格的保险丝,那么当电路过载时又得不到保护。延时保险丝的熔体经特殊加工而成,它具有吸收能量的作用,调整能量吸收量就能使它即可以抗住冲击
2021-04-23 10:17:12
5154
1
原创 电路原理图中的“NC“是什么意思?
电路原理图中的"NC"是什么意思?1、在看电路原理图的时候,电路原理图上有“NC”,我查了下是表示“此处不贴任何电子器件”,我看了下实际的电路板确实没贴,那么不贴的话是不是相当于这个位置空出来了“断路”了?就是说芯片的这个引脚在电路中是“悬空状态的”,与其他任意点都没有连接。2、在模拟电路中,nc是常闭的符号。NC是英文normally close的缩写,意思是指在不通电时处于闭合导通状态的触点,通常称为常闭触点。常开的符号是NO,英文名称为normal open,对应的英文字母“open”的首个字母O
2021-04-19 12:19:38
84139
2
原创 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
3092
6
转载 TVS (瞬态二极管)
TVS (瞬态二极管)瞬态二极管(Transient Voltage Suppressor)简称TVS,是一种二极管形式的高效能保护器件。概述脉冲峰值功率Pm:脉冲峰值功率Pm是指10/1000μs波的脉冲峰值电流IPP与最大箝位电压VC的乘积,即Pm=IPP*VC。特性编辑TVS是一种二极管形式的高效能保护器件。当TVS二极管的两极受到反向瞬态高能量冲击时,它能以10的负12次方秒量级的速度,将其两极间的高阻抗变为低阻抗,吸收高达数千瓦的浪涌功率,使两极间的电压箝位于一个预定值,有效地保护电子
2021-04-07 13:02:13
3758
转载 vcc、vdd和gnd是什么意思
本文主要介绍的是vcc和gnd,首先介绍的是vcc和gnd在电路图中以及电源中的意思,其次阐述了gnd是正极还是负极,具体的跟随小编一起来了解一下。vcc和gnd是什么意思一、在电路图中的意思电路图中VCC GND的意思如下:VCC:电路的供电电压;GND:指板子里面总的地线。(1)VCCVCC:C=circuit 表示电路的意思, 即接入电路的电压, D=device 表示器件的意思, 即器件内部的工作电压,在普通的电子电路中,一般Vcc》Vdd ! 有些IC 同时有VCC和VDD, 这种器
2021-04-06 12:08:37
49519
转载 下载调试接口 SWD 和 JTAG的区别
下载调试接口 SWD 和 JTAG的区别作为嵌入式软件工程师,下载调试器都应该知道,但你真正了解其SWD 和 JTAG接口的含义和区别吗?I 什么是下载调试器简单来说,下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备)理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行。II 调试器协议标准1.什么是标准?简单来说,标准是一组规则和协议,特定行业中的每个参与者都同意遵循并执行。2.调试器协议混乱现象在SWD和JTAG之类的协议出现之前,调
2021-04-06 12:00:21
1193
原创 ..\OBJ\PRESSURE_SYSTEM.axf: Error: L6218E: Undefined symbol FLASH_ErasePage (referred from flash.o).
在keil5中编译时报错:解答:而我犯了第二个错误,没有添加.c文件。
2021-01-30 16:12:31
1356
原创 ..\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
2473
原创 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
8697
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
685
原创 STM32中的通信协议
STM32中的通信协议通讯协议是指在嵌入式开发中,不同的硬件系统或者操作系统之间进行数据交换的方式,是一种数据通讯的规约。通讯协议有很多种,而我今天要说的是串口通讯协议,而且是基于STM32来说的。首先说串口通信,串口是单片机最常见的外设。常见的UART串口主要有两个线,一个线是发送、一个是接收。至于串口发送数据的时候数据线上的高低电平是怎么变化的,这个大家可以自行查阅相关知识,我们常见的单片机自带的串口已经把这个最底层的电平级别的协议做好了,我们使用的时候,收发都是以一个字节为单位来进行的。举个例
2020-12-09 17:00:09
8673
原创 C语言-数组的定义、初始化和使用
那么到底什么是数组呢?顾名思义数组就是很多数的组合!那么这些数有没有什么要求呢,是不是不管什么数组合在一起都是数组呢?同一数组中存储的数必须满足以下两个条件:1、这些数的类型必须相同。2、这些数在内存中必须是连续存储的。换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合。一维数组一维数组的定义方式如下:类型说明符 数组名[常量表达式];例如:int a[5];它表示定义了一个整型数组,数组名为 a,定义的数组称为数组 a。数组名 a 除了表示该数组之外,还表示该数组的首地
2020-12-09 10:23:00
2322
2
原创 C语言-*p
举例:#includeusing namespace std;int main(){//&: 取地址(引用), *取值(解引用) int a = 10;int *p = &a; //&a: 取a的地址值, p是一个指针,指向acout << "*p=" << *p << ", p=" << p << ", &a=" << &a << endl;// int &
2020-12-01 18:03:12
1784
原创 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
1783
原创 C语言-三目运算
当我看到正点原子关于STM32F103的第十八章的软件设计的lcd.c文件中的某个函数代码如下://在指定位置显示一个字符//x,y:起始坐标//num:要显示的字符:" “—>”~"//size:字体大小 12/16/24//mode:叠加方式(1)还是非叠加方式(0)void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode){ u8 temp,t1,t;u16 y0=y; u8 csize=(size/8+((si
2020-11-26 12:14:34
3007
原创 STM32-SRAM静态随机存取存储器
静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。基本简介编辑SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Ac
2020-11-25 11:06:56
2036
原创 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
2622
原创 电器元件——LM7805
LM7805是一款常用的线性三端稳压IC,其外形封装虽然有多种,但输出电压皆为5V,区别就是封装不同,最大输出电流可能不一样。最常用的是如下图所示的TO-220封装的7805。TO-220封装的7805。上图所示的这种封装的7805,最高输入电压为35V,输出电压为固定5V电压(通过在其②脚外接电阻或稳压管,亦可使其输出电压高于5V),原装的最大输出电流为1.5A,其自身散热片与其②脚(GND端)是相通的。该稳压IC使用时,只要输入电压>7V,即可输出稳定的5V电压。若输入电压只是略高于5V,输出不具
2020-11-24 10:58:21
11161
原创 电器元件-电感
定义电感器(Inductor)是能够把电能转化为磁能而存储起来的元件。电感器的结构类似于变压器,但只有一个绕组。电感器具有一定的电感,它只阻碍电流的变化。如果电感器在没有电流通过的状态下,电路接通时它将试图阻碍电流流过它;如果电感器在有电流通过的状态下,电路断开时它将试图维持电流不变。电感器又称扼流器、电抗器、动态电抗器。结构电感器一般由骨架、绕组、屏蔽罩、封装材料、磁心或铁心等组成。1、骨架 骨架泛指绕制线圈的支架。一些体积较大的固定式电感器或可调式电感器(如振荡线圈、阻流圈等),大多数是将漆包线
2020-11-20 09:53:53
1093
原创 stm32串口USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口、流控的定义。RS232 中的“RS”是Recommend Standard 的缩写,即”推荐标准“之意,它并不像 IEEE-1284、IEEE-1394 等标准,是由“委员会定制”。因而,不同的厂商在做 RS232 时,多少会有不同,流控也都会存在差异。以下我们与大家一起探讨流控的作用、搭建及如何操作。为什么需要流控?数据在两个串口之间进行通讯的时候常常会出现丢失数据的现象,比如两台计算机或者是一台计算机和一个单片机之间进行通讯,
2020-11-18 17:22:22
2711
原创 C语言:10、基本数据类型
C语言的三种基本数据类型为整型、实型、字符型。1、整型。包括short、int、long等,用以表示一个整数,默认为有符号型,配合unsigned关键字,可以表示为无符号型。2、实型,即浮点型。包括float, double等,用来表示实数,相对于整型。3、字符型,即char型。用来表示各种字符,与ascii码表一一对应。char 字符型,占1个字节short 短整型,占2个字节int 整型,占4个字节long 长整型,占4个字节float 单精度浮点型,占4个字节double 双精度浮点型,占8个
2020-11-18 11:22:59
1789
原创 C语言:11、实参/形参
实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量或表达式。而有参函数在没有发生调用之前,函数里面的定义的参数就是形参。数据传递编辑在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值。该值在函数调用期间有效,可以参加该函数中的运算。在调用函数过程中发生的实参与形参间的数据传递,常称为“虚实结合”。函数调用过程编辑1、函数的形参列于函数声明中,在函数定义的函数体内使用。在未出现函数调用时,形参不占内存中的存储单元;
2020-11-18 11:21:08
1394
原创 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
1793
原创 如何学习单片机-死记硬背
使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。第一步:数字I/O的使用使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万
2020-11-16 15:27:55
1077
原创 通讯协议
关于通信协议相信大家应该看到很多,比如比较常用的:单线协议,IIC协议,spi协议,串口协议,modbus协议,TCP/IP协议。232协议,485协议等等还有很多的协议。大家可能有很多疑问,到底是什么是协议,它具体的作用是什么。对于要了解一个我们应该怎么来学习和使用呢!要了解这些,要有一个对“协议层(个人想来命名的)”的认识,关于“协议层”都是一层一层叠加上去的,我们就来具体分析下。认识通信协议,通信是交换数据的,数据的构成单位就是bit,byte,frame(帧),数据包,数据信息。通信传输的就是二
2020-11-16 15:26:11
341
原创 单片机大致应用程序的架构有三种
简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。2. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。3. 操作系统,此法应该是应用程序编写的最高境界。一、顺序执行法这种方法,这应用程序比较简单,实时性,并行性要求不太高的情况下是不错的方法,程序设计简单,思路比较清晰。但是当应用程序比较复杂的时候,如果没有一个完整的流程图,恐怕别人很难看懂程序的运行状态,而且随着程序功能的增加,编写应用程序的工程师的大脑也开始混乱。即不利于升.
2020-11-16 15:23:05
566
原创 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
1447
原创 STM32中文参考手册2.2存储器组织中提到“小端格式”
大端格式、小端格式大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示:图2.1小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图2.2所示:图2.2有时候,用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地
2020-11-13 16:55:32
173
原创 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
5036
原创 STM32变量存储到FLASH中
1、使用FLASH的原因我在使用STM32F103CRT6开发产品的过程中,考虑到客户在使用过程中需要自己设定的模式、定时时长、压力值。而这些值在客户使用产品一段儿时间后,这些值设定后就不会再重复设定。所以需要将客户使用过程中自己设定的模式值、定时时长、压力值保存下来,从而可以重复利用。2、我利用的是正点原子和洋桃电子的开发板以及资料:3、基础知识:flash分页地址。4、数据保存过程:(1)解锁FLASH编程擦除控制器 ;(2)清除标志位;(3)擦除指定地址页;(4)从指定页的addr
2020-09-25 15:18:44
5805
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人