自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Python】os模块base 常用os模块属性以及方法

【代码】【Python】os模块base 常用os模块属性以及方法。

2024-04-08 18:45:29 98

原创 【Python】python的常用内置函数(更新中)

过滤出数据中的偶数# 给数据中每个元素加1。

2024-04-01 17:19:16 551

原创 【C语言环境】Sublime中运行C语言时MinGW环境的安装

要知道,GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便;

2024-04-01 00:10:19 1044

原创 【FreeRTOS】【STM32】08 FreeRTOS 消息队列

消息队列是一种数据结构。

2023-10-30 15:33:45 519

原创 【Python】time模块

time模块是python的内置模块。

2023-10-23 18:47:00 228

原创 【FreeRTOS】【STM32】06 FreeRTOS的使用-动态创建多任务 FreeRTOS 的启动流程

**************************** 任务句柄 ********************************/ /** 任务句柄是一个指针,用于指向一个任务,当任务创建好之后,它就具有了一个任务句柄* 以后我们要想操作这个任务都需要通过这个任务句柄,如果是自身的任务操作自己,那么* 这个句柄可以为 NULL。*/ /* 创建任务句柄 */ static TaskHandle_t AppTaskCreate_Handle = NULL;

2023-10-17 16:25:20 774

原创 【FreeRTOS】【STM32】06 FreeRTOS的使用-动态创建单任务

for(;;) (2)/*--任务应用程序--比如点亮一个LED,启动一个马达*/(3)(4)/* 不能从任务函数中返回或者退出, 从任务函数中返回或退出的话就会调用configASSERT(),前提是你定义了 configASSERT()。如果一定要从任务函数中退出的话那一定要调用函数 vTaskDelete(NULL)来删除此任务。*/(5)(1)、任务函数本质也是函数,返回类型一定要为void 类型,任务的参数也是 void 指针类型。

2023-10-17 15:54:22 365

原创 【FreeRTOS】04 FreeRTOS 创建任务相关API函数

此函数也是用来创建任务的,只不过此函数要求所使用的 MCU 有 MPU(内存保护单元),用此函数创建的任务会受到 MPU 的保护。其中空闲任务的任务堆栈大小为 configMINIMAL_STACK_SIZE。: 指向一个结构体 TaskParameters_t,这个结构体描述了任务的任务函数、堆栈大小、优先级等。: 任务堆栈大小,由于本函数是静态方法创建任务,所以任务堆栈由用户给出,一般是个数组,此参数就是这个数组的大小。: 任务句柄,任务创建成功以后会返回此任务的任务句柄,: 传递给任务函数的参数。

2023-10-17 14:19:36 115

原创 【嵌入式C】计算机中大小端的认识

大端符合人类的习惯。

2023-10-17 13:23:32 69

原创 【FreeRTOS】【STM32】04.5 FreeRTOS开始使用前的基础知识 补充

任务调度器在进行任务切换的时候会将当前任务的现场(CPU 寄存器值等)保存在此任务的任务堆栈中,等到此任务下次运行的时候就会先用堆栈中保存的值来恢复现场,恢复现场以后任务就会接着从上次中断的地方开始运行。通过任务调度的方式,执行各个任务,优先级高的先执行,执行完了释放CPU使用权,交予优先级低的。每个任务都必须有个堆栈,当任务切换的时候将上下文环境保存在堆栈中,这样当任务再次执行的时候就可以从堆栈中取出上下文环境,任务恢复运行。静态建任务都需要指定任务堆栈大小。.,每一个任务都有自己的堆栈。

2023-10-17 10:01:06 146 1

原创 【嵌入式C】强制类型转换

类型转换:低转高:延拓,最高位填充;高转低:截断。

2023-10-17 09:43:37 176

原创 【FreeRTOS】【STM32】05 FreeRTOS的使用-静态创建任务

1、Free RTOS使用或来创建任务,这两个函数的参数pxTaskCode也是函数,称作任务函数。任务函数的作用是具体实现某一项功能,比如说我们要点亮led灯那么任务函数的内容就是点亮灯。2、我们需要定义这个任务函数。for(;;) (2)/*--任务应用程序--比如点亮一个LED,启动一个马达*/(3)(4)/* 不能从任务函数中返回或者退出, 从任务函数中返回或退出的话就会调用configASSERT(),前提是你定义了 configASSERT()。

2023-10-12 17:34:01 520

原创 【嵌入式】堆栈与单片机内存

在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。其实堆栈就是单片机中的一些存储单元,这些存储单元被指定保存一些特殊信息,比如地址(保护断点)和数据(保护现场)。

2023-10-12 15:41:48 543

原创 【FreeRTOS】【STM32】02 FreeRTOS 移植

FreeRTOS 所有跟时间相关的事情都在SysTick 中断服务函数中处理。也就是FreeRTOS 的心跳。PendSV_Handler()、SVC_Handler()和 Systick_Handler()三个中断处理函数重复定义,这是因为 port.c 和 stm32f4xx_it.c 这两个文件中有重复定义的函数。这里屏蔽掉 stm32f4xx_it.c 中的 PendSV_Handler()、SVC_Handler()和 Systick_Handler()这三个函数。或者:屏蔽。

2023-10-09 17:27:57 621

原创 【FreeRTOS】【STM32】01从零开始的freertos之旅 浏览源码下的文件夹

基于野火以及正点原子在打开正点原子的资料pdf时,我遇到了pdf无法复制粘贴的问题,这里有个pdf解锁文字复制功能的网址,mark一下。参考资料《STM32F429+FreeRTOS开发手册_V1.2》

2023-10-09 16:32:31 293

原创 【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改

之前也说过了,FreeRTOSConfig.h文件可以添加在工程中任意文件夹,只需要在路径中添加好了就行。该头文件对裁剪整个FreeRTOS 所需的功能的宏均做了定义。这边是野火电子添加注释版本的FreeRTOSConfig.h,添加了一些中文注释,并且把相关的头文件进行分类,方便查找宏定义已经阅读,详见[野火®]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf(1)

2023-10-09 16:31:25 523

原创 【STM32】sct 分散加载文件的格式与应用

在 MDK 的“Options for Target->Linker->Use Memory Layout from Target Dialog”选项可配置该选择。1.勾选时,

2023-09-28 17:18:13 2517 2

原创 【STM32】IAP升级01 bootloader实现以及APP配置(主要)

STM32的IAP升级

2023-09-27 18:04:07 2747 2

原创 【STM32】IAP升级02关闭总中断,检测栈顶指针

这样在 __enable_irq()开启总中断后,MCU就不会响应之前触发的中断了。这说明__disable_irq()只是禁止CPU去响应中断,没有真正的去屏蔽中断的触发,中断发生后,相应的寄存器会将中断标志置位,在__enable_irq()开启中断后,由于相应的中断标志没有清空,因而还会触发中断。// 开启总中断 但测试发现这样一个问题,在关闭总中断后,如果有中断触发,虽然此时不会引发中断,但在调用__enable_irq()开启总中断后,MCU会立即处理之前触发的中断。IAP升级时需要关闭总中断。

2023-09-27 15:45:37 968

原创 【嵌入式C】typedef void (*Fun) (void) 的理解,函数指针的一种方式

类型的函数类型,这个类型的参数是int,返回值是char。3.将glFun函数的地址赋值给pFun。2.定义pFun为PTRFUN类型。1.typedef定义了一个。

2023-09-27 14:21:54 173

原创 【STM32】读写内部Flash初步使用

基于stm32f103,作为个人学习记录使用STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,在紧急状态下常常会使用内部 FLASH 存储关键记录;

2023-09-26 16:48:00 1905

原创 【STM32】IAP升级00 预备知识

Flash够大的情况下,上电后的程序通过修改 MSP 的方式,可以在一块Flash上存在多个功能差异的程序。IAP是为了在执行正常功能前,为了升级功能,提前运行的一段程序。这个程序不执行正常的功能操作,而只是通过某种通信方式(如 USB、USART)接收程序或数据,执行对第二部分代码的更新;1)检查是否需要对第二部分代码进行更新2)如果不需要更新则转到 4)3)执行更新操作4)跳转到第二部分代码执行第一部分称为bootloader程序,第二部分称为APP。

2023-09-22 16:43:07 595

原创 【STM32】SDIO—SD 卡读写01

1.SD 卡总共有 8 个寄存器,用于设定或表示 SD 卡信息。2.SD卡的寄存器不能像STM32那样访问,而是利用命令访问,SDIO 定义了 64 个命令。SD 卡接收到命令后,根据命令要求对 SD 卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现 SD 卡的控制以及读写操作。

2023-09-19 11:11:24 613

原创 【STM32】WWDG—窗口看门狗

与独立看门狗不同的是,独立看门狗只需要在计时到0之前喂狗。而窗口看门狗需要在设定好的区间内进行喂狗,否则进行reset。

2023-09-18 16:03:22 339

原创 【STM32】IWDG—独立看门狗

基于stm32f103基于《零死角玩转STM32—F103指南者》

2023-09-15 17:08:41 322

原创 【STM32】基本定时器

基于stm32f103基于《零死角玩转STM32—F103指南者》进行学习。

2023-09-15 15:50:45 631

原创 【python环境搭建】一台电脑下安装不同python版本时如何安装模块

我的环境中安装了2个版本的python:一个时Anaconda的一个是python3.10。

2023-09-14 21:31:35 406

原创 【STM32】影子寄存器

有阴影的寄存器(AutoReloadRegister),表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preloadregister(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadowregister(影子寄存器)。如图,写新的数值到TIM的PSC更改预分频,但是需要到发生更新事件才真正生效。这些阴影的表示这些寄存器存在影子寄存器。在U事件时传送预装载寄存器至实际寄存器。定时器框图中,有些寄存器下有个阴影。图中也有对这些影子的说明,

2023-09-12 17:31:17 879

原创 【STM32】片上ADC的初步使用

片上ADC的初步使用

2023-09-12 13:14:13 701

原创 【pygame】01 pygame制作游戏的最小系统

这次使用sublime+python进行pygame的游戏开发,目的是学习使用python的基本操作和常用模块添加一个文件夹到工程。

2023-09-10 19:59:57 545 1

原创 【STM32】FSMC—扩展外部 SRAM 初步使用 1

是一个外设,挂载在AHB总线下。可以用于驱动包括SRAMNOR FLASH以及NAND FLSAH类型的存储器,不能驱动如SDRAM这种动态的存储器STM32F429 系列的控制器中,它具有 FMC 外设,支持控制 SDRAM 存储器。简单来说类似于GPMC,可以以直接寻址的方式操作外置的存储设备,比如挂载一块SRAM在0x6000 0000处,不需要再像操作外置存储设备那样使用相关协议写一个字节,直接*(char)0x6000 0000 = 0x01就可以了。

2023-09-08 17:14:57 1670

原创 【STM32】常用存储器

RAM 是“Random Access Memory”的缩写,被译为随机存储器。所谓“随机存取”,指的是当存储器中的消息被读取或写入时,。而RAM可随读取其内部,因此得名。实际上现在RAM已经专门用于指代作为计算机内存的易失性半导体存储器。根据 RAM 的存储机制,又分为动态随机存储器 DRAM(Dynamic RAM)以及静态随机存储器 SRAM(Static RAM)两种。实际应用场合中,,而外部扩展的内存一般使用 DRAM。

2023-09-08 16:55:44 545

原创 【STM32】锁存器

真值表74HC573芯片是一个锁存器简单来说就是由输入引脚 D1~D8 来控制输出引脚 Q1 ~ Q8。OE和LE 的取值会影响 输入数据 控制 输出数据。OE:output enable 输出使能(低电平有效)LE:latch enable 锁存器使能当 OE 为 L ,LE 为 H 时,为 跟随模式,输出数据 = 输入数据。当 OE 为 L ,LE 为 L 时,为 锁存模式,输出数据 = 上一个时刻的输入数据。

2023-09-05 18:21:16 989

原创 【STM32】FSMC接口的复用和非复用

在阅读《零死角玩转STM32—F103指南者》,以及《STM32F10x-中文参考手册》关于FSMC一章节的时候,对于在控制NOR/SRAM的时候使用到的引脚,在提到NOR器件的时候提到了地址复用和非复用接口,一时间没明白是什么东西。

2023-09-05 17:21:13 1104

原创 【STM32】文件系统FATFS与Flash的初步使用

我们使用的是 MDK5.34 编译器,数据类型和 integer.h 里面定义的一致,所以此步,我们不需要做任何改动。0// 预留 SD 卡使用1# define ATA 0 // 预留 SD 卡使用 # define SPI_FLASH 1 // 外部 SPI Flash。

2023-09-05 14:06:11 1323

原创 【STM32】SPI初步使用 读写FLASH W25Q64

(1) SS( Slave Select):从设备选择信号线,常称为片选信号线,每个从设备都有独立的这一条 NSS 信号线,当主机要选择从设备时,把该从设备的 NSS 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行 SPI通讯。所以 SPI通讯以 NSS 线置低电平为开始信号,以 NSS 线被拉高作为结束信号。(2) SCK (Serial Clock):时钟信号线,用于通讯数据同步。

2023-09-01 16:48:19 1136

原创 【STM32】DMA初步使用

DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候,CPU 可以干其他的事情。以STM32F103单片机为例F03有DMA1和DMA2两组DMA,其中DMA1有7个通道,DMA2有5个通道。

2023-09-01 14:45:12 462

原创 【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

当对I2C接收到的数据进行DMA传输时,没有异常。在最后一次DMA数据传输完成后,数据刚放进I2C的DR寄存器,还没来得及把这个新数据通过I2C发送出去,因为用户程序立即做了STOP操作,最后那个数据无法传输。意思是说当DMA产生EOT标志后,(如果开启了EOT相关中断就进中断程序,没有开启就进行软件查询做后续处理)关闭DMA请求,然后等待BTF事件,之后执行STOP操作。查看关于I2C发送代码,发现他在检测到DMA产生EOT标志后,他首先就是做的STOP操作,然后关闭相关DMA请求。

2023-08-31 14:58:23 1344

原创 【STM32】IIC的初步使用

它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。

2023-08-31 13:33:52 934

转载 【STM32】硬件IIC的缺陷

如果你一定需要高速率(400KHz),那么推荐大家使用STM32的替代方案GD32(兆易创新),它与STM32完全兼容但是解决了STM32的硬件I2C bug,经过本人实际测试,在400KHz的情况下工作,48小时无任何错误发生。(1)以上只是考虑了最纯粹的硬件I2C代码,对于某些使用了软件弥补的方法,例如在经常卡住的部分设置超时退出,不在本文的讨论范围内,因为这样已经破坏了正常的I2C协议。2、硬件I2C的CLK在常用的100kHz和400KHz下工作,99%的概率下会在1小时之内卡住,甚至只有几十秒。

2023-08-30 18:12:54 2508

游戏杂记Rgss3a文件的解包

Rgss3a文件的解包工具

2023-05-28

空空如也

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

TA关注的人

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