自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 SPI-NRF24L01

NRF24L01是NORDIC公司生产的一款无线通信芯片,采用FSK调制,内部集成NORDIC自己的Enhanced Short Burst 协议,可以实现点对点或者1对6 的无线通信,通信速率最高可以达到2Mbps. NRF24L01采用SPI通信。①MOSI 主器件数据输出,从器件数据输入②MISO 主器件数据输入,从器件数据输出③SCK 时钟信号,主器件产生④CSN 从器件使能信号⑤CE 使能器件的发送模式或接收模式⑥IRQ 中断信号,发生中断变低电平。

2025-03-30 18:58:54 326

原创 STM32-DMA

1.M - > M: Flash to SRAM, 内部FLASH (CODE)的数据传输到内部的SRAM(变量)2.M -> P : SRAM to 串口 + LED,延时DMA传输数据不需要占用CPU注:当源端数据宽度和目标数据宽度不一样时可参考中文参考手册DMA模块数据对齐表。

2025-03-30 16:47:27 434

原创 SPI接口

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省了空间,提供方便,主要应用在EEPROM,FLASH,实时时钟,AD转换器还有数字信号处理直接。SPI接口一般使用四根线:MISO,主设备数据输入,从设备数据输出MOSI,主设备数据输出,从设备数据输入SCLK,时钟信号,由主设备产生CS,从设备片选信号,由主设备控制。

2025-03-30 15:53:25 545

原创 51单片机LCD1602显示温湿度

LCD1602 (LiquidCrystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其他的一些内置特殊符号,还可以有8个自定义字符。显示容量:16X2个字符,每个字符为5*7点阵。R/W :读写,写-高,读-低,E: 使能高电平有效。RS:设置指令/数据,数据-高,指令-低。CGRAM+CGROM(字模库)DDARM数据显示区。DB0-DB7:数据。

2025-03-30 12:34:31 257

原创 51单片机定时器中断和串口中断配置

51单片机的串口模块没有独立的波特率发生器,所以要通过配置定时器作为串口波特率发生器。

2025-03-29 12:28:34 335

原创 STM32软件IIC实现OLED显示字符串、汉字、数字和温湿度

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用于专用数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能八位单片机相连接。采用单线制串口行接口,信号传输距离可达20M以上。应用于通暖空调,汽车,自动控制设备,气象站家电 湿度调节器,医疗,除湿器等等。

2025-03-28 10:02:00 496

原创 STM32硬件IIC与OLED使用

OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术 OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。常用的OLED屏幕有蓝色、黄色、白色等几种。

2025-03-27 22:11:55 1009

原创 IIC协议以及STM32IIC的特性和架构

IIC引脚少,硬件实现简单,可拓展性强,不需要UASRT,CAN通讯协议的外部收发设备,被广泛使用在系统内多个集成电路IC(芯片)间的通讯,采用半双工的通讯方式。IIC一个支持多设备的总线。”总线”指多个设备共用的信号线,在一个IIC通讯总线中,可连接多个IIC通讯设备,支持多个通讯主机及多个通讯从机。一个IIC总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。

2025-03-27 21:18:19 1247

原创 51单片机笔记

定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号每隔“一秒”,计数单元的数值就加以,当计数单元数值增加到“设定的闹钟提醒时候”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使得程序跳转到中断服务程序。注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。注意: 中断的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的中断资源,例如中断源个数不同,中断优先级个数不同等等。

2025-03-21 19:41:09 1046

原创 4.定时器TIM、系统定时器systick和垃圾桶项目

如果ARPE为1,ARR寄存器的那日同将在每次的更新时间UEV发生时,传送到影子寄存器;STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生PWM波输出,高级定时器TIM1,TIM8可以同时产生7路PWM输出,而通用定时器可以同时产生4路PWM输出,这样STM32可以最多同时输出30路PWM输出。时基单元就是定时器框图的第二部分,它包括三个寄存器,分别是:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)和自动装载寄存器(TIMx_ARR)。

2025-03-19 15:03:35 1280

原创 3.串口USART和蓝牙控制led灯

3.在绝大多数场合下,发送端和接收端,采用的都是同一个时钟,所以在传送数据的同时还要发送时钟信号,以便接收端可以使用时钟信号来确定每一个信息位。·校验位:数据位加上这一位之后,使得“1”的位数应为偶数(偶校验)或者奇数(奇校验),以此来校验数据传送的正确性,校验位是可选的,可以不传输。5.字符帧也叫做数据帧,由起始位,数据位,奇偶校验位,停止位等部分组成,是异步通信的一个重要指标。6.同步通信的另一个重要指标是波特率。在嵌入式中,有众多的通信协议,往往从性能,成本,稳定性,易用性等角度考虑选择合适的协议。

2025-03-15 22:32:48 1081

原创 2.外部中断EXTI和外部中断按键控制led灯

但是,STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有84个中断,包括16个内核中断(异常)和68个可屏蔽中断,具有16级可编程的中断优先级。同时,对每个中断设置一个抢占优先级和响应优先级。概念:在主程序运行过程中,出现了特定的中断触发条件,使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完后又返回原来被暂停的位置继续运行。概念:重映射属于复用功能的另外一个功能,可以把具有特殊功能的引脚,分配到其他引脚上去,如果某个功能被重映射了,那么这个功能将不再遵循其默认的分配。

2025-03-15 17:53:05 757

原创 1.基本GPIO控制和振动传感器控制继电器、led灯

时钟信号的稳定性和配置直接影响芯片的性能、功耗和外设功能。HAL库是近几年官方极力推荐的库,覆盖了全系列的芯片,可以说HAL库就是用来取代标准库的,相对标准库,HAL库有着更高的抽象、整合水平,它的API更多的集中关注在外设的公共函数功能,HAL库的移植性好,它在STM32中的通用性很强。两个上下拉电阻开关均断开,没有上拉也没有下拉,I/O引脚直接连接TTL肖特基触发器,此时,I/O引脚浮空,读取的电平是不确定的,外部信号是什么电平,MCU引脚就输入什么电平,MCU复位上电后,默认为浮空输入模式。

2025-03-14 18:48:36 781

原创 13.链表

将p0->num与p1->num相比较,如果p0->num > p1->num,此时将p1往后移,并使p2指向刚才p1所指的结点。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。2.如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此下去,再如此进行下去,直到遇到表尾为止。1.从p指向的第一个结点开始,检查该结点中的Num值是否等于输入的要求,删除的那个学号。如果分配不成功,返回NULL;

2025-03-09 22:22:58 892

原创 12.结构体

struct 结构名成员表列成员列表由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:类型说明符 成员名;int num;1.2.1在声明类型的同时定义变量,这种形式的定义一般形式为:struct 结构名成员表列}变量名表列;int num;在定义了结构体变量之后,系统会为之分配内存单元1.2.2也可以直接定义结构体类型变量(即不出现结构体名)struct成员表列}变量名表列;

2025-03-09 12:00:11 1064

原创 11.宏定义

无参宏的宏名后不带参数其定义一般形式为: #define 标识符 字符串其中的"#”表示这是一条预处理命令凡是以# 开头的均为预处理命令,Define 为宏定义 命令,“标识符”为所定义的宏名,“字符串”可以是常数、表达式、格式串等。1.宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的替换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不做任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。

2025-03-08 18:00:16 969

原创 10.函 数

函数调用可以作为一个运算量出现在表达式中,也可以单独形成一个语句,对于无返回值的函数来讲,只能形成一个函数调用语句。·被调用函数中对形参的操作,将直接改变实参的值(被调用函数对指针的目标操作相当于对实参本身的操作)· 全局变呈就是在函数体外说明的变量,它在程序中的每个函数里都是可见的。·实参就是在使用函数时,调用函数传递给被调用函数的数据,需要确切的数据。·形参是新开辟的存储空间,因此在函数中改变形参的值,不会影响到实参。·函数指针用来存放函数的地址,这个地址是一个函数的入口地址。

2025-03-04 16:53:36 905

原创 9.指 针

px-py运算的结果是两个指针指向的地址位置之间相隔的数据个数,因此,两个指针相减不是两个指针持有的地址值相减的结果。int a[3][3],含有三个元素,a[0],a[1],a[2],元素a[0],a[1],a[2]都是一维数组名。在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,有时对地址,指针和指针变量不区分,统称指针。1.指针变量+1,是向地址大的方向移动一个目标数据。·在C语言中,数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的起始地址。

2025-03-02 17:06:35 483

原创 8.字符数组和字符串

2.连接前,两串均以‘\0’结束,连接后,串1的‘\0’取消,新串最后加‘\0’·比较规则:将两串字符串从左向右逐个字符比较(ASCII),直到遇到不同字符或‘\0’为止。C语言中没有字符串常量,用字符数组处理字符串,字符数组结束标识:‘\0’·strncpy(p,p1,n),复制指定长度字符串。·strncat(p,p1,n),附加指定长度字符串。·strncmp(p,p1,n),比较指定长度字符串。·格式:strcpy(字符串1,字符串2);·格式:strcmp(字符串1,字符串2)

2025-02-28 19:44:14 394

原创 7.数 组

1.所谓一维数组是指只有一个下标的数组,它在计算机的内存中是连续存储的2.c语言中,一维数组的说明一般形式如下:<存储类型><数据类型><数组名>[<表达式>]例如: int [6]数组名表示内存首地址,是地址常量。sizeof(数组名)是数组占用的总内存空间编译时分配连续的内存,内存字节数=数组维数*sizeof(元素数据类型)注意事项:1.C语言对数组不做越界检查,使用时要注意int a[5];a[5] = 10;2.关于用变量定义数组维数int i = 5;int a[i];

2025-02-27 23:11:06 271

原创 6.控制语句

break语句用于强行跳出switch体,一般每个case后面应有一个break语句,defalut分支后的break可以省略。如:if(a==b && x==y)printf("%d",x);如:if(‘a’)printf("%d",x);·当表达式的值与case后面的常量表达式的值相等时,就执行case后面的语句。3.注意区分if(x=1)和if(x==1)的不同。1.语句块,当有若干条语句的时候,比喻用(......)括起来。if() 语句3。else if(表达式2)语句块2。

2025-02-27 17:42:31 573

原创 5.输入与输出

说明2:与scanf函数不同,字符串并不以空格作为字符串输入结束的标志。·功能:按指定格式从键盘读入数据,存入地址表指定单元中,并按回车键结束。则x = 2 ch = c(2和c之间的空格被"%*c""吃掉"了)格式说明:%[修饰符]格式字符,用于指定输出格式。·格式:int puts(const char*s)用"%c"格式符时,空格和转义字符作为有效字符输入。格式:printf("格式控制符",输出表)方法2:用格式串中空格或"%*c"来"吃掉"·格式:char*gets(char*s)

2025-02-25 20:52:15 645

原创 4.C语言中的运算符

c语言提供的算数运算符:+、-、*、/、%、++(float、double不能取余)逻辑与"&&"运算符的运算规律如下:短路特性-逢0截止。"的作用所以运行结果是"ture"逻辑异或"^"运算符运算规律如下:相同为假,不同为真。逻辑或"||"运算符的运算规律如下:短路-逢1截止。·<运算符>为左移(<<)或右移(>>)运算符;运算符的一般形式:sizeof(类型或变量名)<表达式2>:<表达式3>逗号运算符的运算结果由最后一个表达式决定。·<运算量>必须为整形结果数值;·<表达式>也必须为整形结果数值。

2025-02-25 17:02:20 730

原创 3.c语言中的变量

说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句中(默认是随机数)。2. 只要程序没有结束,就不会随着说明他的程序段的约束而消失,他下次再调用该函数,该存储类型的变量不会重新说明,而且还保留上次调用存储。称为寄存器型,register变量想将变量放入CPU的寄存器中,这样可以加快程序的运行速度。extern为外部参照引用型,使用extern说明的变量是想引用在其他文件中的函数体外外部说明的变量。当变量在一个文件的函数体外说明,所有其他文件中的函数或程序段都可引用这个变量。

2025-02-24 19:07:53 255

原创 2.c语言中的常量

指数形式的实数一般是由尾数部分、字母e或E和指数部分组成。在c语言中,实数只有十进制的实数,分为单精度和双精度。标识常量也叫符号常量,一般用大写英文字母的标识符。所谓字符串常量是指用双引号括起来的一串字符来表示的数据(字符串以\0结尾)。字符常量是指一个单一字符,其表示形式是由两个单引号包括的一个字符 例如。所谓标识常量是指用标识符代替常量使用的一种常量,其名称通常是一个标识符。在c语言中,字符常量具有数值,字符常量的数值就等于字符的ASCII值。整数可以是十八进制数,八进制数和十六进制数,例如。

2025-02-24 18:23:33 183

原创 1.基本数据类型

使用char数据类型需要的变量需要特别注意,防止数据超出值域。补码:正数的补码是其本身,负数的补码是在其原码的基础上符号位不变,其余按位取反后+1。反码:正数的反码是其本身个,负数的反码是在其原码的基础上符号位不变,其余位按位取反。原码:符号位加上真值的绝对值,用最高位(第一位)表示符号位,其余表示值。只有两个量ture和false, 表示逻辑真值和逻辑假值。包括float和double。

2025-02-24 17:35:04 340

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除