自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据存储_数据类型:整形存储和大小端

只要是两个字节以上的数据类型都区分大小端存储方式。存储方式和硬件有关系,和编译器无关。

2023-06-23 22:05:37 78

原创 二刷c语言-调试

调试快捷键数组越界访问后,循环变成死循环的bug。

2023-06-22 23:41:41 72

原创 二刷c语言-结构体

创建结构体类型,在java c++ 这种面向对象的语言当中叫类。c当中的变量 就是面向对象语言当中的对象。使用 “.”操作符和 “->”操作符的区别。浮点数在内存中不能精确保存。1、直接传输结构体变量。2、通过结构体指针传参。

2023-06-21 23:37:30 77

原创 二刷c语言笔记

scanf函数 如果读取输入成功 函数返回值是1,如果读取失败返回值是EOF判断输入大小写,可以调用头文件当中的islower issupper 函数。

2023-06-20 22:20:32 92

原创 二刷C语言笔记

二维数组 sizeof(arr[0])表示的是第一行的大小,arr也表示数组首元素的地址,但是这里的元素单位是行。二维数组也是连续存储,可以行可以理解成多个数组,列可以理解成数组内部元素个数。当前行末尾和下一行开头地址也是连续的。所以函数内的sizeof(arr)是指针变量的大小 32位编译环境 是4个字节。传过去的是指向该数组的指针 是首元素的地址 并不是数组本质。在定义数组作用域内 sizeof(arr) 才表示数组的大小。必须设置递归循环条件 ,书写的时候必须符合。

2023-06-17 18:18:11 91

原创 二刷C语言笔记

11、%g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出是占宽度较小的一种),且不输出无意义的零。6、%u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。9、%f格式符,用来输出实数(包括单双精度),以小数形式输出。5、%x格式符,以十六进制数形式输出整数。4、%o格式符,以八进制整型式输出整数。10、%e格式符,以指数形式输出实数。12、%p格式符,用于变量地址的输出。8、%s格式符,用来输出一个字符串。7、%c格式符,用来输出一个字符。

2023-06-16 12:05:15 80

原创 (STM32)can总线通信

STM32内部 CAN外设控制器的模式介绍:工作模式:测试模式调试模式查手册可以了解。STM32内部CAN外设的设备框图

2023-06-14 15:45:51 283

原创 (STM32)SPI硬件外设

APB2 的外设时钟PCLK是72MHz,SPI1挂载在APB2,最大速度是72MHz/2 = 36MHz。APB1 的外设时钟PCLK是36MHz,SPI2等挂载在APB1。PCLK (Peripheral Clock )外设时钟。

2023-06-11 22:42:35 366

原创 (STM32)W25Q64存储模块

HOLD:芯片正常读写数据时,突然产生中断,然后想用SPI通信线去操控其他器件,这时如果把CS置回高电平,那时序就终止了,但如果你又不想终止总线,又想操作其他器件,这就可以HOLD引脚置低电平,这样芯片就HOLD住了。芯片释放总线,但是芯片时序也不会终止,它会记住当前的状态,当你操作完其他器件时,可以回过来,HOLD置回高电平,然后继续HOLD之前的时序,相当于SPI总线进了一次中断,并且在中断里,还可以用SPI干别的事情。256字节的页缓存区。最小擦除单元,不是字节,是按照存储器的划分,最小是扇区。

2023-06-10 23:16:04 1753

原创 (STM32)SPI通信

I2C通信性价比最高,实现消耗最低硬件资源前提下,实现最多功能。

2023-06-09 15:07:00 247

原创 (STM32)I2C硬件外设

可变多主机是总线上挂载的设备当中没有固定哪个设备是主机,当总线空闲,任何一个设备都可以控制主线与其他设备通信,通信完成后释放总线,继续保持从机状态,当多个设备都想要控制总线,产生总线冲突,总线仲裁,失败的一方让出控制权,这个模式就是所有设备一视同仁。硬件I2C比软件更加节省CPU资源,执行效率高,并且可以实现完整多主机通信,时序波形规整,通信速率快等。7位寻址和10位寻址在时序上的区别:7位寻址,发送的第一个字节7位地址位,1位读写位。10位寻址,发送的第一个字节,前5位是11110,第8位是读写位。

2023-06-07 23:00:06 412

原创 (STM32)MPU6050

自测方式:先使能自测,读取寄存器数据,再失能自测,读取寄存器数据,两个数据相减得到的数值 叫自测相应,自测相应在芯片手册内有范围标注,在范围内则芯片正常工作,不在范围内则代表芯片异常。2、传感器可以看做可变电阻,通过分压,输出模拟电压,通过ADC模数转换,转换完成放在数据寄存器内,读取寄存器可以得到传感器的值,转换都是全自动进行。想要获得稳定的欧拉角,单凭任何一个传感器的数据都做不到,需要多个传感器的数据进行数据融合,把几种传感器的数据都结合起来,综合多个传感器数据,取长补短。6轴:3轴速度、3轴角速度。

2023-06-03 16:31:28 398

原创 (STM32)I2C通信协议

一般不同芯片型号,地址不一样,但是如果再一条总线用到相同的设备,可以改变七位当中的后几位用来区分(具体由对应芯片手册里面可以找到)。多主多从:本质上也是一主多从,当从机想要申请控制权和现有主机产生冲突时,由通信协议仲裁,胜利的一方获得主机权,失败的一方则成为从机。SDA数据线:从机不允许主动申请控制,只有主机发送读取从机的命令后或者从机应答时才能短暂获得控制权。一主多从:全程只有一个主机,多个从机,从机不可以主动申请控制I2C总线,必须主机来发送控制权。起始和终止条件都是主机产生的,从机不允许产生。

2023-05-31 22:44:45 471

原创 (STM32)FlyMCU串口下载&STLink

Bootloader是ST公司写好的一段程序代码。用于程序自我更新,也叫自举程序。

2023-05-30 19:09:24 628

原创 (STM32)USART串口外设代码实现笔记

常用的库函数,Clock是需要用同步时钟输出的时候配置的,一般不用。

2023-05-28 15:05:27 122

原创 (stm32)通信接口-USART

SPI:时钟SCL(Serial Clock) 、 主机输出数据脚MOSI(Master Output Slave Input)、主机输入数据脚MISO(Master Input Slave Output) 、片选CS(Chip Select)用于指定通讯对象。一般有两根数据线,发送、接收是分开的,使用时互不影响,例如:USART 、 SPI。半双工:一般只有一个数据线,例如I2C、CAN、USB,差分数据线是正负线组成一根数据线。多设备:中间可以挂载多设备,比点对点多一个寻址的过程。

2023-05-26 23:47:58 2982

原创 (STM32基础)DMA直接存储器存取

Direct Memory Access可以直接访问STM32内部存储器,包括运存SRAM(存储变量数组)、程序储存器FLASH(存储程序)和寄存器等。外设-存储器一般使用硬件触发,每个DMA通道的硬件触发源不一样,要传递数据的话必须使用对应的连接通道,不可以随意选择通道。提供外设和存储器,一般是外设的DR(date register)数据寄存器。计算机五大组成部分:运算器、控制器、存储器、输入设备和输出设备。存储器-存储器一般使用软件触发。

2023-05-24 23:00:08 343

原创 (STM32基础)ADC模数转换器

DAC是数字到模拟量的桥梁,但是DAC大部分功能都可以被PWM替代,因为PWM只有完全导通和完全断开两种状态,基本没有功率损耗,所以大功率电机调速一般都是使用PWM,而不是DAC。设定两个阈值(低阈值、高阈值) 当AD值大于高阈值时触发高阈值的操作,低于高阈值,高于低阈值,则继续保持高阈值操作;ADC开始触发信号Start有两种触发方式:一种是软件触发(写一行代码手动触发),一种是硬件触发(如图触发源,主要是来自定时器的TRGO引脚触发,也可以是外部中断触发)。裁剪分辨率,把数据的尾数裁掉,

2023-05-24 22:32:50 1159

原创 (STM32基础)输入捕获笔记

1、测频法适合测量频率较高的信号,测周法适合频率较低的信号。两种方法都固有±1的误差,测频法是因为闸门时间截止时,待测信号频率最后一个周期可能是不完整的,会被计1或者计0;测周法是因为,计次的最后一个周期,待测信号频率可能已经结束,进入下一个周期。待测周期N越大,误差越小。1、通用定时器四个输入捕获和输出比较共用四个CCR寄存器,CH1-CH4 四个引脚也是共用的。待测信号小于中界频率时测周法误差更小,待测信号大于中界频率时测频法误差更小。所以同一个计时器,同一个引脚不可以同时使用输入捕获和输出比较。

2023-05-20 00:05:57 1252

原创 (STM32基础)TIM(定时器)输出比较(Output Compare)

1、默认复用功能是电路硬件连接,无法更改的。如果想要使用同一个引脚的两个默认复用功能,只能通过重映射将两个功能映射在不同的引脚使用。如果在重映射功能表内找不到外设功能复用口,则不能映射到别的引脚。使用复用推挽输出的原因,因为普通开漏推挽输出引脚控制权是输出数据寄存器,要让TIM定时器来控制GPIO口输出,需要把GPIO输出模式配置为复用输出模式,此模式下输出数据寄存器的连接被断开,输出控制权转移给片上外设。GPIO口是数字口,只有0/1两种状态。每个GPIO口引脚有对应的外设复用引脚功能,可以查表找到。

2023-05-17 22:42:08 945

原创 (STM32基础)浮空输入使用情况

一般情况下为了避免引脚电平乱跳,会采用上拉或者下拉输入的方式,保证输入口有一个默认输入电平,防止引脚悬空,外界干扰导致输入乱跳现象。浮空输入作为三种STM32输入模式的一种,虽然并不常用,但也是非常重要的。使用浮空输入一般是外部输入信号功率很小,内部上拉电阻容易影响外部输入电平。

2023-05-13 18:04:35 1699

原创 (STM32基础)TIM定时中断笔记

C8T6只有四个定时器,一个高级,三个通用。定时器向下兼容,高级含有通用所有功能,通用含有基本所有功能。

2023-05-06 13:25:47 694

原创 (STM32基础)对射式红外传感器&旋转编码器笔记

1、如果出现对射式红外传感器和编码器在实际试验现象当中出现数字乱跳,原因可能是实验不是理想过程,过程中有抖动的误差现象,这个时候最好再加一个触发中断时引脚电平的判断。2、不要在中断和主函数内调用相同的函数,或者操作同一个硬件。中断进入或者退出只能保证CPU正常进入和退出,并不能保护外部硬件中断时的现场。可以在中断函数内操作变量或者标志位,然后再主程序内对变量进行显示和操作。减少代码耦合性,增加模块的独立性。1、最好不要执行耗时过长的代码,因为中断用来处理突发的事情,防止主程序受到严重阻塞。

2023-04-29 17:58:16 1168

原创 (STM32基础)对射式红外传感器计次&旋转编码器计次

第一步:因为对射式红外传感器模块DO数据传感器模块会给引脚发送高低电平信号来触发中断计次,所以需要配置该引脚外部中断初始化。第二步:按照图示初始化所涉及到的外设:①先开启所涉及的外设RCC时钟②配置GPIO口为输入模式③配置AFIO选择所需要用到的Pin口连接到EXTI④配置EXTI选择边沿出发方式,以及触发响应方式⑤配置NVIC,给中断选择合适的优先级。

2023-04-28 21:07:46 1862 5

原创 (STM32基础)STM32常用中断介绍

1、中断通道就是中断源,STM32具体到某个型号不一定有68个中断这么全,基本上所有外设均可触发中断。一个外设可以有多个中断源,每个中断通道都有16个可编程的优先等级。2、中断使用NVIC(嵌套中断向量控制器)统一管理(可以把它比作是医院里面的叫号系统,CPU是医生)。管理中断、分配优先级都由它来控制。NVIC是一个内核外设,服务与CPU。图中n的意思是一个外设可能会占用多个中断通道。

2023-04-28 18:09:04 3493 2

原创 (STM32基础)调试方法介绍

Keil自带的调试模式非常强大,但是在调试模式下不可修改主程序,如果想要修改主程序需要退出调试模式重新编译。5、外设菜单栏可以查看所有的外设寄存器, 并可以显示实时的寄存器值。4、符号窗口可以实时查看程序当中的所有变量值。3、可以使用程序运行指令来观测代码执行情况。选择查看外设内的哪个寄存器。

2023-04-28 14:59:09 1825

原创 (STM32基础)调试方法介绍&LED简介

本教程文件内已提供可调用的显示函数。

2023-04-27 21:35:49 451

原创 (STM32基础)按键控制LED&光敏传感器控制蜂鸣器

1、创建初始化函数因为初始化后IO口默认低电平,所以初始化最后置1。

2023-04-27 19:18:14 1803

原创 (STM32基础)GPIO输入模块的介绍&C语言补充知识

定义后的新名字在左边后面不用加分号可以给任何变量换名字宏定义相对来说不够安全 ,名字可以直接换,无检查定以后的新名字在右边后面必须加分号只能给变量类型换名字typedef换名后会自动检查,较为安全,必须是变量名,如果不是则不能换。

2023-04-27 16:07:47 1038

原创 (STM32基础)STM32实现LED闪烁&LED流水灯&蜂鸣器

1、按照新建工程步骤创建工程,新建start、library、user三个文件夹,从固件库添加相应文件2、keilkil小程序用来清理listings和objects文件夹中编译产生的中间文件,以后需要打包工程的话可以先用keilkill先清理,这样文件夹会大大缩小所占内存。

2023-04-26 18:59:52 6659

原创 (STM32基础)GPIO外设学习

STM32的GPIO口结构介绍

2023-04-26 14:36:59 623 1

原创 (STM32基础)STM32点灯程序

STM32点亮你的第一个LED灯

2023-04-25 19:29:15 5483 3

原创 (STM32基础)STM32用keil5开发前准备

1)Keil5安装MDK-ARM版本后,需要安装对应芯片器件库,否则新建工程无芯片可选项。查看设备管理器 stlink 是否驱动正常,如果是感叹号则需要装驱动2、插入STLINK后,在keil安装目录下找到安装驱动程序,安装STLINK驱动。3、插入usb转串口模块后,安装驱动程序(资料文件夹内 工具软件内)。

2023-04-25 12:58:15 5468 2

原创 (STM32基础)STM32入门

(day1)STM32入门

2023-04-22 17:07:30 2694 3

空空如也

空空如也

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

TA关注的人

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