自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【目标检测】YOLOv5|YOLOv8模型QT界面可视化部署

用于部署YOLOv5和YOLOv8的可视化QT界面,可实现图片、文件夹、视频、摄像头的ONNX与OpenVino部署

2024-05-14 17:44:22 2377 4

原创 【2023秋招面试面经汇总】——嵌入式软件开发

2023秋招面试面经汇总——嵌入式软件开发

2023-11-11 20:16:28 878 2

原创 【2024提前批/秋招笔试汇总2】——大疆-嵌入式软件-2023.08.06

A.GPU无法使用共享内存结构,提高通信速度B.GPU的并行数据处理可以大幅度提高运算能力C.GPU使用高速全局内存可以进一步提升运算速度D.GPU的计算能力比CPU强A.epoll相比于poll会随着fd的数目增长而降低效率B.边缘触融发模式(Edge Trigger)模式是epoll缺省的工作方式C.epoll工作在水平触发模式时如果用户不进行任何操作,该事件并不会丢失D.在大规模并发服务器场景中需要监听多个socket的时候,选择select比epoll高效。

2023-11-11 20:13:37 1788

原创 秋招求职经验分享

这里分享出我秋招面试的面经,供大家参考:xxx。

2023-11-11 20:07:51 1753 1

原创 深度学习服务器(Linux)开发环境搭建教程

如果加载不出来,就要在https://plugins.jetbrains.com/pycharm离线下载相对应版本的安装包,并上传到服务器,选择离线安装即可。在服务器中应该默认安装的有conda软件,但是它在/opt路径下,每次服务器到期后,之前安装的环境就会清空,但是/home/user下的数据一般不会清空,所以每次进入服务器都需要重新配置环境。当使用服务器跑程序时,经常会遇到关闭IDE程序就停止运行的问题,我们跑程序一般都是很长时间,总不能一直连接着服务器吧?

2023-11-03 15:52:16 753

原创 【学习FreeRTOS】第20章——FreeRTOS内存管理

申请内存xWantedSize:申请的内存大小,以字节为单位;返回值:返回一个指针,指向已分配大小的内存。如果申请内存失败,则返回NULL。释放内存*pv:指针指向一个要释放内存的内存块;获取当前空闲内存的大小返回值:返回当前剩余的空闲内存大小.在一段内存没有被释放之前绝对不能再调用一次函数pvPortMalloc()为其再次分配内存,否则会导致内存泄露定义一个大数组作为 FreeRTOS 管理的内存堆/* 定义一个大数组作为 FreeRTOS 管理的内存堆 *///一般是10K。

2023-08-26 17:09:23 1325

原创 【学习FreeRTOS】第19章——FreeRTOS低功耗模式Tickless

很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等一般MCU都有相应的低功耗模式,,方便带FreeRTOS操作系统的应用开发。

2023-08-25 17:31:18 482

原创 【学习FreeRTOS】第18章——FreeRTOS软件定时器

const char * pcTimerName /* 软件定时器名字 */ListItem_t xTimerListItem /* 软件定时器列表项 *//* 软件定时器的周期 */void * pvTimerID /* 软件定时器的ID *//* 软件定时器的回调函数 */#if。

2023-08-25 16:42:39 470

原创 【学习FreeRTOS】第17章——FreeRTOS任务通知

任务通知API函数主要有两类:①发送通知 ,②接收通知。【注意】发送通知API函数可以用于任务和中断服务函数中;接收通知API函数只能用在任务中。xTaskNotify():发送任务通知,带有通知值xTaskNotifyAndQuery():发送任务通知,带有通知值,保留接收任务原通知值xTaskNotifyGive():发送任务通知,不带通知值xTaskNotifyFromISR():在中断中发送任务通知xTaskNotifyAndQueryFromISR():在中断中发送任务通知。

2023-08-24 15:06:52 391

原创 【学习FreeRTOS】第16章——FreeRTOS事件标志组

xEventGroupCreate():使用动态方式创建事件标志组xEventGroupCreateStstic():使用静态方式创建事件标志组xEventGroupClearBits():清零事件标志位xEventGroupClearBitsFromISR():在中断中清零事件标志位xEventGroupSetBits():设置事件标志位xEventGroupSetBitsFromISR():在中断中设置事件标志位xEventGroupWaitBits():等待事件标志位。

2023-08-23 17:51:48 377

原创 【学习FreeRTOS】第15章——FreeRTOS队列集

xQueueCreateSet():创建队列集xQueueAddToSet():队列添加到队列集中xQueueRemoveFromSet():从队列集中移除队列xQueueSelectFromSet():获取队列集中有效消息的队列xQueueSelectFromSetFromlSR():在中断中获取队列集中有有效消息的队列。

2023-08-23 17:01:46 334

原创 【学习FreeRTOS】第14章——FreeRTOS信号量

优先级翻转:高优先级的任务反而慢执行,低优先级的任务反而优先执行优先级翻转在抢占式内核中是非常常见的,但是在实时操作系统中是不允许出现优先级翻转的,因为优先级翻转会破坏任务的预期顺序,可能会导致未知的严重后果。在使用二值信号量的时候,经常会遇到优先级翻转的问题。解释:高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。从现象上看,就像是中优先级的任务比高优先级任务具有更高的优先权(即优先级翻转)二值信号量数值信号量互斥信号量总结创建。

2023-08-21 15:55:12 239

原创 【学习FreeRTOS】第13章——FreeRTOS队列

int8_t * pcHead /* 存储区域的起始地址 *//* 下一个写入的位置 */union} u;/* 等待发送列表 *//* 等待接收列表 *//* 非空闲队列项目的数量 *//* 队列长度 *//* 队列项目的大小 *//* 读取上锁计数器 *//* 写入上锁计数器 *//* 其他的一些条件编译 */} xQUEUE;//当用于队列使用时:/* 存储区的结束地址 *//* 最后一个读取队列的地址 */

2023-08-19 12:09:54 889

原创 【学习FreeRTOS】第12章——FreeRTOS时间管理

相对延时 vTaskDelay():指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束绝对延时xTaskDelayUntil():指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务中止任务延时xTaskAbortDelay():用于终止处于阻塞态任务的阻塞(1)为任务主体,也就是任务真正要做的工作(2)是任务函数中调用vTaskDelayUntil()对任务进行延时(3)为其他任务在运行。

2023-08-18 16:20:24 444

原创 【学习FreeRTOS】第11章——FreeRTOS中任务相关的其他API函数

此函数用于获取指定任务的任务优先级,使用该函数需将宏 INCLUDE_uxTaskPriorityGet置1形参:xTask,要查找的任务句柄(NULL代表任务自身)返回值:整数,任务优先级数值。

2023-08-18 11:39:20 350

原创 【嵌入式学习笔记】嵌入式入门8——SPI总线协议

SPI控制寄存器1用于配置SPI工作参数:SPI模式、SPI方向、NSS、数据帧、CPOL、CPHA、波特率、帧格式等SPI状态寄存器用于查询当前SPI传输状态(TXE、RXNE)SPI数据寄存器用于存放待发送数据或接收数据,有两个缓冲区(TX/RX)FLASH是常用的储存器件,它具有容量大,可重复擦写、按“扇区/块”擦除、掉电后数据可继续保存的特性,属于EEPROM写数据前需要擦除写操作,1->0,擦除0->1FLASH主要有NOR Flash和NAND Flash两种类型。

2023-08-17 15:37:29 805

原创 【学习FreeRTOS】第10章——FreeRTOS时间片调度

注意:使用时间片调度需把宏 configUSE_TIME_SLICING 和 configUSE_PREEMPTION 置1。

2023-08-17 09:14:04 288

原创 【学习FreeRTOS】第9章——FreeRTOS任务调度

任务切换的本质:就是CPU寄存器的切换(又称上下文切换),在PendSV中断服务函数中完成需暂停任务A的执行,并将此时任务A的寄存器保存到任务堆栈,这个过程叫做保存现场将任务B的各个寄存器值(被存于任务堆栈中)恢复到CPU寄存器中,这个过程叫做恢复现场触发PendSV中断方式滴答定时器中断调用执行FreeRTOS提供的相关API函数:portYIELD()通过向中断控制和状态寄存器 ICSR 的bit28 写入 1 挂起 PendSV 来启动 PendSV 中断。

2023-08-16 20:59:35 429

原创 【学习FreeRTOS】第8章——FreeRTOS列表和列表项

* 初始化时,列表中只有xListEnd,因此pxIndex指向xListEnd *//* xListEnd的值初始化为最大值,用于列表项升序排序时,排在最后 *//* 初始化时,列表中只有xListEnd,因此上一个和下一个列表项都为xListEnd本身 *//*初始化时,列表中的列表项数量为0(不包含xListEnd) *//* 初始化用于检测列表数据完整性的校验值 */形参:待初始化列表。

2023-08-15 18:21:51 793

原创 【嵌入式学习笔记】嵌入式入门7——IIC总线协议

EEPROM是一种掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载AT24C02是一个2K bit的EEPROM存储器,使用IIC通信方式。A0/1/2 : 设备地址决定引脚WP : 写保护引脚SCL : 时钟线SDA : 数据线。

2023-08-15 15:51:39 363

原创 【学习FreeRTOS】第7章——FreeRTOS临界段代码保护及调度器挂起与恢复

FreeRTOS 在进入临界段代码的时候需要关闭中断(管理范围内),当处理完临界段代码以后再打开中断taskENTER_CRITICAL()——任务级进入临界段taskEXIT_CRITICAL()——任务级退出临界段taskENTER_CRITICAL_FROM_ISR()——中断级进入临界段taskEXIT_CRITICAL_FROM_ISR()——中断级退出临界段系统任务调度靠中断,ISR也靠中断,临界区是直接屏蔽了中断,实现代码保护的目的成对使用。

2023-08-14 17:09:11 431

原创 【学习FreeRTOS】第6章——FreeRTOS中断管理

中断:让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫中断中断请求:外设产生中断请求(GPIO外部中断、定时器中断等)响应中断:CPU停止执行当前程序,转而去执行中断处理程序(ISR)退出中断:执行完毕,返回被打断的程序处,继续往下执行。

2023-08-11 20:39:51 431

原创 【学习FreeRTOS】第5章——FreeRTOS任务挂起与恢复

【代码】【学习FreeRTOS】第5章——FreeRTOS任务挂起与恢复。

2023-08-11 20:38:52 455

原创 【学习FreeRTOS】第4章——FreeRTOS任务创建与删除

在实际的应用中,动态方式创建任务是比较常用的,除非有特殊的需求,一般都会使用动态方式创建任务静态创建:可将任务堆栈放置在特定的内存位置,并且无需关心对内存分配失败的处理临界区保护,保护那些不想被打断的程序段,关闭freertos所管理的中断,中断无法打断,滴答中断和PendSV中断无法进行不能实现任务调度以下是动态创建任务和静态创建任务的区别动态创建静态创建TCB与堆栈内存自动分配手动分配TCB与任务句柄的关系句柄是动态TCB的指针与静态TCB无特定关系返回值。

2023-08-11 18:22:14 525

原创 【学习FreeRTOS】第3章——FreeRTOS移植及配置文件

对于初学者来说,这些配置内容,目前有个感性的认识即可,随着后面例程的使用就会逐渐熟练起来。移植步骤细节根据《 FreeRTOS开发指南》的第二章操作。

2023-08-10 20:13:02 434

原创 【学习FreeRTOS】第2章——FreeRTOS基础知识

FreeRTOS中任务共存在4种状态:运行态:正在执行的任务,该任务就处于运行态,注意在STM32中,同一时间仅一个任务处于运行态就绪态:如果该任务已经能够被执行,但当前还未被执行,那么该任务处于就绪态阻塞态:如果一个任务因延时或等待外部事件发生,那么这个任务就处于阻塞态挂起态:类似暂停,调用函数 vTaskSuspend() 进入挂起态,需要调用解挂函数vTaskResume()才可以进入就绪态总结:仅就绪态可转变成运行态其他状态的任务想运行,必须先转变成就绪态。

2023-08-10 18:22:16 370

原创 【学习FreeRTOS】第1章——FreeRTOS入门

FreeRTOS 是一个免费的嵌入式实时操作系统免费开源:商业产品中使用,无潜在商业风险,无须担心可裁剪:FreeRTOS的核心代码9000+行,包含在3个.c文件中简单:简单易用,可移植性非常好优先级不限:任务优先级分配没有限制,多任务可同一优先级(一般设置0-31)任务不限:可创建的实时任务数量没有软件限制(要考虑硬件内存大小)抢占/协程/时间片:支持抢占式,协程式、时间片流转任务调度FreeRTOS官网:https://www.freertos.org/,学习流程循序渐进,由浅入深。

2023-08-10 17:43:22 297

原创 【嵌入式学习笔记】嵌入式入门6——定时器TIMER

基本定时器:TIM6/TIM7主要特性:16位递增计数器(计数值:0~65535)16位预分频器(分频系数:1~65536)可用于触发DAC在更新事件(计数器溢出)时,会产生中断/DMA请求通用定时器:TIM2/TIM3 /TIM4 /TIM5主要特性:16位递增、递减、中心对齐计数器(计数值:0~65535)16位预分频器(分频系数:1~65536)可用于触发DAC、ADC在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求。

2023-08-05 16:51:57 2811

原创 【嵌入式学习笔记】嵌入式入门5——窗口看门狗WWDG

【代码】【嵌入式学习笔记】嵌入式入门5——窗口看门狗WWDG。

2023-08-04 16:42:50 345

原创 【嵌入式学习笔记】嵌入式入门4——独立看门狗IWDG

独立看门狗是异常处理的最后手段,不可依赖,应在设计时尽量避免异常的发生。

2023-08-04 15:41:13 452

原创 【嵌入式学习笔记】嵌入式入门3——串口USART

串口:即串行通信接口,指按位发送和接收的接口,如:RS-232/422/485等。RS-232接口(DB9)USART:通用同步异步收发器,Universal synchronous asynchronous receiver transmitterUART: 通用异步收发器,Universal asynchronous receiver transmitter,USART/UART都可以与外部设备进行全双工异步通信。

2023-08-02 16:18:56 1506 1

原创 【嵌入式学习笔记】嵌入式入门2——中断(外部中断)

NVIC还有中断挂起,解挂,激活标志等非常用功能,不做介绍。即复用功能IO,主要用于重映射和外部中断映射配置。调试IO配置AFIO_MAPR[26:24],配置JTAG/SWD的开关状态重映射配置AFIO_MAPR,部分外设IO重映射配置外部中断配置AFIO_EXTICR1-4,配置EXTI中断线0~15对应具体哪个IO口特别注意:配置AFIO寄存器之前要使能AFIO时钟,方法如下:对应RCC_APB2ENR寄存器 位0即系统配置控制器,用于外部中断映射配置等。

2023-07-31 20:42:41 2941

原创 【嵌入式学习笔记】嵌入式入门1——GPIO

不同型号,IO口数量可能不一样,可通过选型手册快速查询快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)每个IO口都可以做中断支持8种工作模式F1系列IO端口基本结构① 保护二极管② 内部上拉、下拉电阻③ 施密特触发器④ P-MOS & N-MOS管F4/F7/H7系列IO端口基本结构施密特触发器:施密特触发器就是一种整形电路,可以将非标准方波,整形成方波P-MOS & N-MOS管:MOS管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭。

2023-07-31 17:59:25 1244

原创 【嵌入式学习笔记】嵌入式基础11——STM32常用轮子(SYSTEM)

【嵌入式学习笔记】嵌入式基础11——STM32常用轮子(SYSTEM)

2023-07-29 15:52:37 496

原创 【嵌入式学习笔记】嵌入式基础10——STM32时钟配置

【注】SystemInit 主要进行外部存储器配置和中断向量表地址配置。但是并没有用到,只是保留接口。HAL库的SystemInit 函数并没有任何时钟相关配置,所以后续的初始化步骤,我们还必须编写自己的时钟配置函数。

2023-07-28 17:55:31 487

原创 【嵌入式学习笔记】嵌入式基础9——STM32启动过程

总结:MAP文件是MDK编译代码后,产生的集程序、数据及IO空间的一种映射列表文件,简单说就是包括了:各种.c文件、函数、符号等的地址、大小、引用关系等信息。函数局部变量较多,嵌套关系复杂时,需加大栈大小(Stack_Size)

2023-07-27 17:39:37 1086

原创 【嵌入式学习笔记】嵌入式基础8——STM32CubeMX

STM32CubeMX是ST开发的一款图形配置工具,可通过,一个图形配置工具,搭配不同系列的STM32Cube固件包,即可支持不同系列的STM32芯片。

2023-07-26 11:25:49 200

原创 【嵌入式学习笔记】嵌入式基础7——认识HAL库

直接操作寄存器:执行效率高,时间成本高标准外设库 (Standard Peripheral Libraries):F0/F1/F3/F2/F4/L1,目前已停止维护HAL库(Hardware Abstraction Layer):全系列兼容、ST主推的库、兼容性、易移植性、效率低LL库(Low Layer):全系列兼容、与HAL库捆绑发布、轻量级、效率高、不匹配部分复杂外设此类函数通常被_weak修饰(弱函数),允许用户重新定义该函数。

2023-07-26 11:04:51 545

原创 【嵌入式学习笔记】嵌入式基础6——STM32基础知识

MCU厂商,经ARM公司授权,添加不同的外设 ,就成为了各种XX32芯片。

2023-07-25 10:39:29 669

原创 【嵌入式学习笔记】嵌入式基础5——C语言基础

宏定义可以提高效率、可读性、易改性,核心是替换#define 标识符 字符串标识符:宏定义的名字字符串:常数、表达式、格式串等一般的宏定义3.141598000000U带参数的宏定义x?x?x?dox??x?x?x?x?x?x?x?x?x?;x?while0建议使用 do{ … }while(0)来构造宏定义,这样不会受到大括号、分号、运算符优先级等的影响,总是会按你期望的方式调用运行。

2023-07-23 16:33:27 225

空空如也

空空如也

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

TA关注的人

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