自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sjxpf922的博客

学习记录

  • 博客(71)
  • 资源 (1)
  • 收藏
  • 关注

原创 大疆2025校招内推

需要内推码的请留言哦。

2024-07-04 18:10:04 610 84

原创 您的连接不是私密连接 攻击者可能会试图从 github.com 窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情

进入C:\Windows\System32\drivers\etc\ 文件夹,找到hosts文件,右键编辑 hosts,粘贴“192.30.255.112 github.com” 保存即可

2022-06-05 11:22:22 3816 2

原创 Zephyr--添加自己的库(文件)

创建自己的文件在zephyr/drivers路径下创建my_add文件夹mkdir my_add在my_add文件夹下创建:# CMakeLists.txt# Kconfig# test.c在CmakeLists.txt中添加:zephyr_sources(test.c)#添加我自己的.c文件。例子比较简单,Kconfig文件就不用写什么配置了。编写简单的test.c文件,我这里就写了一个简单的函数:#include "drivers/test.h"i

2022-04-01 20:44:27 1544

原创 设备树学习

设备树简介设备树是用来描述硬件的分层数据结构,Zephyr操作系统使用设备树来描述器支持的板子上可以使用的硬件设备,以及硬件的初始配置。分为两种类型的设备输入文件:设备树源和设备树绑定。其中设备树源文件包含设备树本身,绑定描述了它的内容,包括数据类型。构建系统使用设备树源和绑定来生成C头文件,这个生成头文件的内容被include\devicetree.h API抽象,可以用它获取设备树的信息。...

2022-03-25 22:22:08 1158

原创 Kconfig语法学习

1、调用其它Kconfig顶层Kconfig需要调用其他路径下的Kconfigsource "xxx/Kconfig"eg: source "arch/Kconfig" /*也就是引用arch文件下的Kconfig*/ source "boards/Kconfig" source "soc/Kconfig" source "arch/Kconfig" source "kernel/Kconfig" source "dts/Kconfig" sou

2022-03-22 14:03:01 1797

原创 Zephyr--CMake Error:某个例程的CMakeLists.txt与根目录下的CMakeLists.txt不匹配,使用不同的源目录重新运行cmake

文章标题具体问题是:解决办法,删除根目录下编译生成的build文件,再重新编译即可

2022-03-20 10:51:35 504

原创 Zephyr编译问题

west build -b nucleo_g071rb samples/basic/blinky编译zephyr给的例子时出现如下错误:应该是之间编译过了,再次编译应该清除一下: west build -b nucleo_g071rb samples/basic/blinky -p

2022-03-19 20:50:18 356

原创 Ubuntu 18.4 安装ST-Link V2

1、安装相关库和工具sudo apt-get install git make cmake libusb-1.0-0-dev sudo apt-get install gcc build-essential2、下载ST-Link进入跟目录,并创建文件夹mkdir stm32进入该文件夹目录cd stm32clone ST-Linkgit clone https://github.com/stlink-org/stlink 进入stlink路径下cd s

2022-03-19 16:53:47 1610

原创 Zephyr--开发环境搭建(Ubuntu 18.04.6)

1、Ubuntu虚拟机创建略2、搭建开发环境1)更新Ubuntusudo apt updatesudo apt upgrade2)安装依赖项包括CMake、Python、Devicetree compiler①下载、检查并执行 Kitware 存档脚本wget https://apt.kitware.com/kitware-archive.shsudo bash kitware-archive.sh②用于apt安装的依赖项:sudo apt insta

2022-03-13 14:26:58 2583

原创 Linux开发过程中遇到的问题集合 ~持续更新

1、未添加MODULE_LICENSE(“GPL”)/括号中的内容写错2、通过在串口终端输入ls proc/device-tree 命令查看设备是否成功加入,有的时候在vscode会cp失败,可通过Ubuntu终端重新cp。3、VMware 全屏设置/*主要就是安装VMware Tools*///第一步更新下载源:sudo apt-get update//第二步安装:sudo apt-get install open-vm-tools//不需要通过设置修改分辨率4、.

2022-03-07 22:43:44 427

原创 Linux内核中bytestream kfifo学习

定义kfifo结构体#define __STRUCT_KFIFO_COMMON(datatype, recsize, ptrtype) \ union { \ struct __kfifo kfifo; \ datatype *type; \ const datatype *const_type; \ char (*rectype)[recsize]; \ ptrtype *ptr; \ ptrtype const *ptr_const; \ }#define .

2022-02-22 21:16:26 844

原创 STM32CubeMX系列(6)--SD与FatFs

用STM32CubeMX生成FatFs之前需要打开SDIO,否则无法使用FatFs下面配置FatFs然后直接生成工程即可。FatFs常用的API// 打开或者创建一个文件 FRESULT f_open ( FIL* fp, /* Pointer to the blank file object */ const TCHAR* path, /* Pointer to the file name */ BYTE mode /* Access mode and file open m

2022-02-19 16:24:03 1343

原创 NO ST-LINK detected/ST-LINK USB communication error

解决办法①下载并安装STLINK驱动②更新STLINK固件③找到你的keil5安装目录>ARM>STLink>USBDriver目录下的stlink_winusb_uninstall.bat 点击执行(即先卸载),然后再执行stlink_winusb_install.bat(即重新安装)...

2022-02-18 12:46:10 7286 1

原创 SWD烧录时 No target connected

1、原因①接线问题②开启了__HAL_AFIO_REMAP_SWJ_DISABLE();//也就是说关闭了SWD③使用STM32CubeMX配置时没有配置SWD2、对应解决办法①排查接线问题②注释掉__HAL_AFIO_REMAP_SWJ_DISABLE();长摁reset键,看是否会出现SWD,如果可以,那么长摁的同时然后点击烧录然后快速松开reset键(可以多试几次),只要成功了,以后就可以直接烧录了③配置SWD...

2022-02-18 12:41:29 987

原创 SD卡之FATFS库移植

方法一:官网库移植1) 官网下载Fatfs库http://elm-chan.org/fsw/ff/00index_e.html2) 将源文件添加到工程(该工程需要实现某存储器的读写等底层接口,比如SD卡或者FLASH)3) 修改FATFS相关函数接口主要包括diskio.c中的:① disk_status()//获取设备状态② disk_initialize()//初始化③ disk_read()//设备读④ disk_write()//设备写⑤ disk_ioctl()//设备属性接口

2022-02-18 12:22:51 1470

原创 STM32CubeMX系列(5)--定时器实现PWM+DMA控制LED

在STM32CubeMX系列(4)–定时器实现PWM控制LED的基础上,实现用DMA+PWM的方式实现普通LED灯的呼吸灯效果,只需要再开启一下DMA通道即可:选择后,会自动开启中断:在main.c中定义数组:#define LEN 20uint16_t pwm_buf[LEN] = {0};在main函数中对上面的数组赋值for(int i=0;i<LEN;i++){ pwm_buf[i]= 30*(i+1); /* 设置不同的占空比 */}在while中调用HAL

2022-01-27 23:04:26 5848 2

原创 STM32CubeMX系列(4)--定时器实现PWM控制LED

1.概念PWM:Pulse-width modulation,即脉宽调制。简单的来说就是控制一个信号周期内高/低电平持续的时间。脉宽:脉冲是指短时间内出现电压或电流的突然变化,脉宽就是脉冲宽度也就是脉冲持续时间,也就是高/低电平持续时间)。占空比:指的就是一个信号周期内,高电平所占时间的比例(严谨的说法应该是有效电平占比);脉冲:定时器通过计数器与输出比较值进行比较,实现高低电平的切换,下面借用正点原子的图片:以PWM模式2为例当CNT<CCRx的时候,IO输出低电平(逻辑0),反之输

2022-01-16 16:50:35 999

原创 零长(柔性)数组

#include "stdio.h"#include "string.h"#define NUM 11struct Test{ int len; char buf[0];};int main(void){ struct Test TEST; printf("%d\r\n",sizeof(TEST));//测试柔性数组内存占用情况 printf("%x\r\n",&TEST); printf("%x\r\n",TEST.buf);//测试柔性数组的首地址

2022-01-15 16:48:53 341

原创 STM32CubeMX系列(3)--定时器中断

演示使用TIM2通用定时器,以中断的方式实现0.5s翻转一次LED。1、创建工程2、添加代码首先开启定时器中断,生成的代码不会自动生成,因此需要手动在void MX_TIM2_Init(void)中添加/* TIM2 init function */void MX_TIM2_Init(void){ /* 部分省略... */ if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterC

2022-01-13 20:42:58 3024

原创 STM32CubeMX系列(2)--串口传输方式

1、阻塞式传输HAL_UART_Transmit();//发送HAL_UART_Receive();//接收2、中断传输HAL_UART_Transmit_IT();//中断发送HAL_UART_Receive_IT();//中断接收/*每发送*/3、DMA传输HAL_UART_Transmit_DMA();HAL_UART_Receive_DMA();/*结合空闲中断,实现不定长数据传输*/以DMA传输为例使用STM32CubeMX创建工程具体过程见:STM32Cu

2022-01-13 16:07:05 1975

原创 STM32CubeMX系列(1)--串口工程创建

1、创建工程①时钟配置先打开RCC开启HSE再进入时钟配置界面②配置SYS配置对应的Debug方式,因为我的是ST-Link所以选择如下③配置串口以USART1为例然后生成工程即可,记得工程路径不要有中文,否则会出现:工程编译错误2、串口重定向用printf实现串口打印方法1,操作寄存器printf.h#ifndef __PRINTF_H#define __PRINTF_H#include <stdio.h>#include "stm32f1xx

2022-01-11 16:57:59 579

原创 STM32CubeMX工程出现error: L6236E: No section matches selector - no section to be FIRST/LAST.

今天用STM32CubeMX创建一个简单的工程,就配置了一个LED,编译的时候发现如下错误:error: L6236E: No section matches selector - no section to be FIRST/LAST.很纳闷,这么简单的工程都能配错吗?看了一遍配置确定没问题,突然发现工程路径包含中文,应该就是这里的问题,于是改变路径重新生成,就没问题了。...

2022-01-11 15:49:26 756

原创 keil代码排版问题

keil工程代码缩进有的不是按照四个空格缩进,一行一行的Tab键很麻烦,可以设置一下自动排版,以后只要在打开的.c/.h中,点一下“自动排版”,那么整个文件就会自动排好了。方法:1) 首先下载插件Artistic Style (https://sourceforge.net/projects/astyle/)2) 然后将在解压包里的bin/Astyle.exe文件复制到keil安装目录下我的具体是:D:\keil_mdk3) 打开keil,在Tools菜单打开Customize Tools Menu选

2022-01-11 10:57:52 2081 1

原创 百度 嵌入式Linux软件研发工程师面试记录

百度提前批面试问题

2021-12-15 16:05:39 1511

原创 ARM常用汇编语法

指令格式操作指令 目的操作数 源操作数1、MOV指令MOV R0, R1 //@表示寄存器R1的数据拷贝给R0寄存器MOV R0, #0x10 //@表示将立即数0x10赋值给寄存器R0//注: 立即数指的是在立即寻址方式指令中给出的源操作数(言外之意就是可以直接使用的),类似于常量,不能作为被赋值的量使用。//立即数的优点:取指的时候可以直接访问,不用单独去内存读取,速度快//立即数的缺点:不能是任意的32位数字,具有局限性2、LDR指令LDR Rd, [Rn,#offs

2021-11-28 11:56:48 922

原创 字符串之括号匹配

#include "stdio.h"#include "assert.h"#include "string.h"#define STACKMAXSIZE 10002typedef struct stack{ char buf[STACKMAXSIZE]; int top;} Stack; void StackInit(Stack* obj){ obj -> top = -1;}/*栈是否为空*/bool Isempty(Stack* obj){ if(obj -&

2021-09-25 09:34:06 280

原创 OJ在线编程 输入不定长数组的方法

#include "stdio.h"#define MAX 100 //根据题意,定义数组最大长度 int main(void){ int num1[MAX] = {0}; int num2[MAX] = {0}; char c1; char c2; int i = 0; int j = 0; for(i = 0; i < MAX; i ++) { scanf("%d%c",&num1[i],&c1); if(c1 == '\n') //

2021-09-22 11:28:23 482

原创 嵌入式面试题_1 如何将一个函数编译定位到指定的falsh地址

之前的项目中没有注意到这个问题,今天面试的时候,面试官老师问到了,就去百度学了一下,很简单,就以我的工程做个演示,具体步骤如下:1、打开魔术棒,点击Linker(链接)选项…2、设置我们规定的flash地址块3、...

2021-09-06 10:46:51 1159 2

原创 Freertos -- 二值信号量-任务与中断同步测试configASSERT(断言)卡死

今天重新用STM32CubeMX生成一个小工程,就简单的对二值信号量–任务与中断同步做一个小测试。原理:1)定时器中断500ms 调用xSemaphoreGiveFromISR函数,Give一次信号量;2)创建一个任务 Take信号量,得到就翻转一次LED,否则死等。逻辑上很清晰,但是烧录测试的时候发现,灯不亮。就去排查原因:进入Debug,单步调试发现函数进入了:信号量释放函数,并卡在断言处了。很快就知道原因了,信号量为0,不是说信号量创建失败了,而是在STM32CubeMX在生成代码时将定

2021-09-01 16:28:19 1409 2

原创 Linux系统内核中断处理为什么分为上下两个部分

linux中断分为:上半部(顶半部)与下半部(底半部)上半部:上半部就是中断处理函数,那些处理过程比较快,不会占用很长时间的处理就可以放在上半部完成。下半部:如果中断处理过程比较耗时,那么就将这些比较耗时的代码提出来,交给下半部去执行,这样中断处理函数就会快进快出。目的:Linux 内核将中断分为上半部和下半部的主要目的就是实现中断处理函数的快进快出,那些对时间敏感、执行速度快的操作可以放到中断处理函数中,也就是上半部。剩下的所有工作都可以放到下半部去执行,比如在上半部将数据拷贝到内存中,关

2021-08-04 22:06:58 2700

原创 keil打开STM32的map文件的方法

1、双击下图所示文件2、若是双击没有反映打开魔术棒->Listing->Select Folder for Listing…重新修改一下路径就好了

2021-07-02 10:52:37 1334

原创 积累找bug的经验能力

先吐槽一下:我真是太菜了项目1:Ardupilot+ECU驱动方法1、利用STM32、keil调试程序,方便快捷,通过Debug 窗口可以清晰地查看传感器的返回数据格式方法2、利用串口打印;之前是先用stm32调通了,搬到apm上的,发现并不能实现,我就开始怀疑apm给的read、write函数接口机制是不是和stm32 串口DMA空闲中断不同,导致丢包之类的问题,就一直尝试不同的波特率,运行频率,然并卵。最后朋友告诉我,在飞控和ECU之间连接USB转TTL,监控一下ECU和飞控是如何“聊天的”,

2021-06-18 23:23:57 137

转载 链表,队列和栈的区别

    链表,队列和栈都是数据结构的一种。Sartaj Sahni 在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。      Ø  链表 ...

2021-06-07 22:13:06 3506

原创 STM32学习过程中遇到的问题(持续更新)

1、keil Debug的时候切记把优化等级改为0因为不调为0的话,单步调试的时候会出现迷惑性的现象,箭头表面上会出现不按照我们代码逻辑那样跳转。但是实际上他又是按照我们写的代码逻辑执行的。...

2021-06-02 21:29:40 1074 3

转载 软件模拟SPI接口程序代码(4种模式)

软件模拟SPI接口程序代码(4种模式)   SPI协议简介     SPI的通信原理很简单,一般主从方式工作,这种模式通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说)、MOSI(数据输出,针对主机来说)、SCLK(时钟,主机产生)、CS/SS(片选,一般由主机发送或者直接使能,通常为低电平有效) ●SPI接口介绍 SCK:时钟信...

2021-05-20 23:11:10 1488

转载 stm32 中断服务函数是如何进入的

今天在看stm32的中断,一时间不理解stm32主函数是如何进入中断函数的,按C编程的理解,会有个特定的入口之类的,但是看demo过程中没有发现入口。 以串口中断服务函数void USART1_IRQHandler(void) 为例,首先用到串口中断,需要先设定串口中断初始化以及串口初始化,另外void USART1_IRQHandler(void) 中断服务函数也应该写好。 发现在stm32的启动文件...

2021-05-08 17:39:06 4148

转载 C与C++混编

摘自:(若侵权告知立删) C与C++混编 </h1> <div class="clear"></div> <div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown">介

2021-04-19 15:27:43 136

转载 extern “C“详解

转载于https://blog.csdn.net/u010639500/article/details/87885421仅用于学习记录 ,若侵权告知立删 【目录】 引言 extern “C”的前世今生 小心门后的未知世界 Q&A c++调用c的方法

2021-04-19 10:55:34 511

转载 MDK编译全过程及数据存储

转载于 https://blog.csdn.net/flyleaf91/article/details/52325556?只用于学习记录,若侵权请告知立删48.1 编译过程 48.1.1 编译过程简介 首先我们简单了解下MDK的编译过程,它与其它编译器的工作过程是类似的,该过程见图 481。 图 481 MDK编译过程     编译过程生成的不同文件将在后面的小节详细说明,此处先抓住主要流程来理解。 (1)   &nb

2021-04-18 21:25:10 3063

原创 快速转发CSDN博客的方法

1、打开你要转发的博客2、快捷键 ctrl+shift+i3、选择article_content(文章内容),这时你会看到左边要被转发的内容也被选中4、右键选择 copy outerHTML5、打开写文章界面粘贴即可6、注明转发

2021-04-16 10:21:04 217

Rotation Vector in Attitude Estimation

Ardupilot EKF2参考文献

2022-02-13

空空如也

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

TA关注的人

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