自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言基础知识

①内存:是电脑上特别重要的储存器,为了有效使用内存,就把内存划分为一个个小的内存单元,每个内存单元的大小是一个字节。为了有效的访问到内存的每个单元,就给内存单元进行编号,这些编号被称为该内存的地址。④指针变量的大小:不管是什么类型的指针,都是在创建指针变量。在32位机器上,指针变量的大小是4字节,在64.位机器上,指针变量的大小是8字节。这里的*是解引用操作符,意思是通过p中存放的地址,找到p所指向的对象。int说明p指向的对象a是int类型的,*说明p是指针变量。结构体访问:结构体对象.成员名。

2024-12-26 18:01:24 116

原创 C语言基础知识

修饰全局变量->修饰全局变量时,全局变量的外部链接属性就变成了内部链接属性,其他源文件就不能使用这个全局变量了;修饰函数->一个函数本来是具有外部链接属性的,但是被static修饰时,外部属性就变成了内部属性,其他源文件无法使用)①循环:for,while,do-while,break(跳出循环),continue(用于跳出本次循环)sizeof(单位是字节,数组的元素个数:sizeof(arr)/sizeof(arr[0]))表达式2:表达式3(三目操作符,为真表达式2,为假表达式3)

2024-12-25 23:11:43 309

原创 C语言基础知识点

C语言基本知识点

2024-12-24 19:59:21 327

原创 STM32-Unix时间戳

Unix时间戳(Unix Timestamp)是一个计数器数值,这个数值表示的是一个从1970年1月1日0时0分0秒开始到现在所经过的秒数,不考虑闰秒。时间戳存储在一个秒计数器里,秒计数器为32位/64位的整型变量世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间。

2025-03-12 11:59:29 318

原创 STM32-SPI通信外设

STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成数据收发等功能,减轻CPU的负担。STM32F103CT6硬件SPI资源:SPI1(APB2)、SPI2(APB1)TDR(发送数据寄存器),RDR(接收数据寄存器),TXE(接收数据标志位,接收到数据时置1),RXNE(发送数据标志位,成功发送数据后置1)

2025-03-11 21:36:22 800

原创 STM32-SPI通信协议

W25Q64系列是一种低成本、小型化、使用简单的非易失性存储器,常用于数据存储、字库存储、固定程序存储等场景。存储介质:Onr Flash闪存。

2025-03-10 17:54:14 1011

原创 STM32-I2C通信外设

I2C通信外设。

2025-03-08 13:33:12 611

原创 STM32-I2C通信协议

就是在串口通信上满足四个要求。

2025-03-07 15:39:51 377

原创 STM32-USART串口数据包

HEX数据包,主要是状态机逻辑,然后跟着写代码就好。

2025-03-06 20:10:42 445

原创 STM32-USART-串口发送+接收

如果使用查询,那初始化到上一步就结束了,查询的流程是,在主函数里不断判断RXNE标志位,如果置1了,就说明收到数据了。串口发送--原文链接:https://blog.csdn.net/rxy0727/article/details/1460446498。总结:RXNE一旦置1,就会向NVIC申请中断,之后就可以在中断里接收数据。可以取下表的一个或者多个取值的组合作为该参数的值。如果使用中断,则还需要开启中断,配置NVIC.参数2:USART_FLAG。该参数用以使能或者失能指定的。参数1:USARTx。

2025-03-06 13:11:44 1896

原创 STM32——USART—串口发送

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是STM32微控制器内部集成的一个硬件外设,用于串行数据通信。它能够根据数据寄存器中的一个字节数据自动生成数据帧时序,并通过TX引脚发送出去,同时也可以自动接收RX引脚的数据帧时序,将其拼接成一个字节数据并存放在数据寄存器中。可配置数据位长度(8/9需要校验位就是9位),停止位长度(0.5/1/1.5/2)可选校验位:无校验,奇校验,偶校验。

2025-03-05 21:44:52 2535

原创 STM32——DMA详解

DMA(Direct Memory Access)直接存储器存取DMA可以提供外设存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置通道,DMA1(7个通道),DMA2(5个通道)外设就是寄存器,寄存器就是存储器DMA2仅存在于大容量产品和互联型产品。1. SPI/I2S3、 UART4、 TIM5、 TIM6、 TIM7和DAC的DMA请求仅存在于大容量产品和互联型产品。2. ADC3、 SDIO和TIM8的DMA请求仅存在于大容量产品。

2025-03-04 21:27:23 735

原创 STM32-GPIO详解

GPIO是英文General Purpose Input/Output的缩写,中文翻译为通用输入/输出。它是一种在数字电子系统中常见的,用于与外部设备进行通信和控制。GPIO接口可以作为输入或输出引脚使用。作为输入引脚时,GPIO可以接收来自外部设备的电信号,并将其转换为数字信号,供系统内部使用。作为输出引脚时,GPIO可以将数字信号发送到外部设备,从而实现对其的控制。GPIO的基本概念包括以下几个方面:引脚:GPIO接口通常由一组引脚组成,每个引脚都可以用作输入或输出。

2025-03-03 21:43:45 959

原创 STM32中的ADC

12位逐次逼近型ADC,1us转换时间输入电压范围:0-3.3v,转换结果范围:0-409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元。

2025-03-02 17:18:52 2589

原创 STM32定时器定时中断

TIM_ITConfig用来使能中断输出信号,对应中断输出位置(第一个TIMx选择定时器,TIM_IT选择哪个中断输出,第三个使能还是失能)TIM_TimrBaseInit时基单元初始化(第一个参数TIMc选择某个定时器,第二个是结构体,里面包含了配置时基单元的一些参数)整个模块配置完成后,我们还需要使用一下计数器,当定时器使用后,计数器就会开始计数,当计数器更新时触发中断。TIM_Cmd用来使能计数器,对应运行控制(第一个参数TIMx选择定时器,第二个使能还是使能)TIM_DeInit恢复缺省配置。

2025-02-15 16:23:13 421

原创 基于STM32对射式红外传感器计次

接线:VCC、GND分别接电源的正负极,DO数字输出端,任意选择一个GPIO口接上就行(以PB14口为例,当我们的挡光片或者编码盘在这个对射式红外传感器中间经过时,DO就会输出电平跳变信号,然后这个电平跳变信号触发STM32 PB14口的中断,在中断函数里,执行变量++的程序,然后主循环里调用OLED显示这个变量)中断函数放中断程序:打开启动文件——找到需要的中断函数名,调用这个函数,就可以配置AFIO的数据选择器,来选择我们想要的中断引脚。第二步,配置GPIO,选择我们得端口为输入模式;

2025-02-12 22:55:57 465

原创 STM32EXTI外部中断

中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行(有点像函数传参)中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断。

2025-02-10 20:42:01 433

原创 STM32调试工具OLED

接线:因为OLED的GND要接负极,VCC要接正极,所以接两条线把GND引入负极供电孔,VCC引入正极供电孔(也可以不接两条线,直接给PB6输出低电平,PB7输出高电平,用GPIO口直接给OLED供电)1.串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息。OLED显示屏:性能优异的新型显示屏,具有功耗低,响应速度快,宽视角……供电:3-3.5V,通信协议:12C/SPI,分辨率:128×64。连接stm32——编译程序——点击放大镜进入调试模式。3.keil调试模式。

2025-02-10 00:51:15 330

原创 STM32光敏传感器控制蜂鸣器

GPIO的使用方法:首先初始化时钟——定义结构体——赋值结构体——GPIO_Mode可以选择8种输入输出模式——GOIO_Pin选择引脚——GPIO_Speed选择输出速度——最后使用GPIO_Init函数,将指定的GOIO外设初始化好。2.在.c添加头文件,初始化光敏传感器(开启时钟,配置端口),定义函数(读取端口函数uint8_t LightSensor_Get(void),当光线暗时,GPIO_ReadInputDataBit为1,否则为0)所需硬件:STM32芯片,面包板,蜂鸣器,光敏传感器。

2025-02-09 01:08:43 423

原创 STM32按键控制

GPIO_ReadOutputDataBit就是读取输出数据寄存器的某一位。GPIO_ReadInputDataBit就是读取输入数据寄存器的某一位。调用函数时千万小心不要加void,开启时钟时一定要小心库函数是否弄错。3、使用GPIO引脚,外接按键,编写程序让按键控制发光二极管亮或者灭。GPIO_ReadOutputData就是读取整个输出数据寄存器。GPII_ReadInputData就是读取整个输入数据寄存器。2、掌握keil开发stm32程序环境搭建和设置。B站江协科技STM32入门教程。

2025-02-09 00:46:05 355

原创 基于STM32的LED灯闪烁

LED发光二极管,正向通电点亮,反向通电不亮。长脚是正极,短脚是负极。这里ST-Link注意是接靠后的一端。

2025-01-25 14:07:51 114

原创 keil5出现L6236E错误

在Start文件里添加startup_stm32f10x_hd.s。

2025-01-21 19:44:30 149

原创 keil5出现L6320W错误

解决方法:找到魔术棒—Linker ——Use Memory Layout from Target 1。

2025-01-21 19:40:50 249

原创 指针表达式归纳

6,这时出现了两个运算符,位于同一个优先级,且结合性自右向左,因此它相当于*(p++),这里有三个步骤:产生p的一个复制;++操作符增加p的值;在原p复制的部分执行间接访问操作,因此,表达式的值是提取原p的内容。3.由于*的优先级高于+,所以p先执行取内容操作,即把*p的值加1为‘b’4,让p指向下一个内存单元,再取出其中的内容。5,由于++位于p之后,先取值,再将p的值加1。并赋初值为变量ch的地址。2,将字符a赋值给p所指向的对象。

2025-01-16 23:36:25 209

原创 实现三子棋

注意:为了方便后期的修改,行和列用定义一个符号ROW和COL;玩家只知道坐标是从(1,1)开始,所以判断做坐标合法型时,用户输入的坐标要-1;判断输赢,玩家赢,电脑赢,平局,继续;涉及的知识点:循环结构,选择结构,函数,二维数组,时间戳,随机数。1.首先要给棋盘初始化,也就是给棋盘赋一个空值。3.下棋(玩家下棋和电脑下棋)

2025-01-13 02:15:21 123

原创 冒泡排序(一维数组)

一趟冒泡排序让一个数据来到应该的位置 n个数据要进行n-1趟。注意:外层循环只进行一次,等内层执行完再执行。冒泡排序核心思想:两个相邻的元素进行比较。

2025-01-12 12:57:34 80

原创 二维数组赋值

【代码】二维数组赋值。

2025-01-12 12:22:47 321

原创 计算1/1-1/2+1/3-1/4+1/5-……+1/99-1/100 的值 打印出结果

/ 3.除法运算中 当除数和被除数都是整数时结果只保留整数部分 舍弃小数部分 当除数和被除数只要有一个浮点数 进行浮点数相除。// 2.+ -交替 用flag=1 每计算一次结果就取反-flag。//1.只有分母变化 所以分母循环++

2025-01-10 01:36:24 148

原创 给定两个数 求两个数的最大公约数

方法一:找出两个数中的较小值 进行依次递减 直到能被两个数同时整除则为最大公约数。方法二:辗转相除法 就是两个数相除 不为0 再相除。

2025-01-10 01:02:02 118

原创 三个数字按从大到小输出

注意点:是三个if,不要用if,else-if,因为多分支语句有且仅有一条语句会被执行。

2024-12-30 02:17:14 132

原创 汉诺塔(用递归)

【代码】

2024-12-30 01:43:09 123

原创 斐波那契数列

【代码】斐波那契数列。

2024-12-29 22:57:03 114

原创 n的阶乘(递归方式)

【代码】n的阶乘(递归方式)

2024-12-29 22:27:16 77

原创 编写函数 不允许创建临时变量 求字符串长度(函数递归)

【代码】编写函数 不允许创建临时变量 求字符串长度(函数递归)

2024-12-29 21:48:52 76

原创 接收一个整型值,按照顺序打印它的每一位

【代码】接收一个整型值,按照顺序打印它的每一位。涉及知识点:函数递归

2024-12-29 21:11:06 114

原创 【无标题】

用函数实现二分法

2024-12-28 18:51:12 161

原创 写一个函数判断某一年是不是闰年

闰年判断:能被4整除并且不能被100整除。

2024-12-28 17:46:51 135

原创 写一个函数判断是不是素数

质数又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。只要在开平方(sqrt)之前能找到一个因子就说明不是素数,否则就是素数。

2024-12-28 17:28:21 174

原创 写一个函数可以交换两个整型变量的内容

当实参传递给形参时。形参是实参的一份临时拷贝,对形参不会影响,所以要传a,b的地址给函数,函数用指针来接收。

2024-12-28 16:25:03 110

原创 猜数字游戏

得到的是1到100的随机数,因为RAND_MAX这个范围内会出现各种数字,可能是1也可能是101或者10000,甚至是30000……但是模上100之后范围都只能在99以内。头文件是;time_t time(time_t*time),不需里面的数据时可以填NULL;注意点:1,rand();生成随机数的函数范围是(0~RAND_MAX(32767)),调用之前,要先调用srand。2.srand();设置一个随机数据的起点,头文件

2024-12-27 21:49:16 117

空空如也

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

TA关注的人

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