自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 四轴无人机-毕设随笔

当电路比较长或者复杂,各种元器件相互影响,就会产生寄生电感,寄生电感指的是电路中由于电子器件内部元件结构的特点而不可避免地产生的电感,电感会阻碍电流突变,但会导致电压跌落,怎么解决呢,如果加上合适的电容,就不会,因为电容可以充当电源,弥补跌落。跟电池密切相关,这里说下我对电压电阻的理解,首先,电压决定电流,所谓的电阻是材质特性,对电机来说,原理是安培力,转速与电流大小有关,材质不变,所以电压越大转速越快,但是,电流是电池产生的,所以还要看电池能不能产生这么大的电流。

2023-12-08 17:36:23 469

原创 stm32读写SD卡

spi模式下,CRC校验是没用的,一般设为0xFF,当然,CMD0和CMD8的CRC是固定的,

2023-11-07 18:05:04 85

原创 MQTT协议笔记

MQTT介绍

2023-10-26 18:08:03 96

原创 LCD学习笔记

FSMC可以操作多种外部存储器,内部有四个快,对应不同类型,地址也不同,比如块1,适用于LCD显存,有4个区,不同区地址也不同,通过配置FSMC的寄存器,可以确定用哪一个区,注意,ILI本身是支持多种接口的,但是LCD厂家只实现了一种接口。实验室用的LCD屏幕,驱动IC是ILI9341。LCD是依靠背光层发光,OLED是自发光。LCD一般采用8080时序控制。

2023-09-02 23:05:45 80

原创 牛客刷题笔记

switch语句,有break的话没什么说的,没有怎么办呢。

2023-08-04 14:09:16 56 1

原创 linux开发随笔

同样的源码,经不同的编译链编译后,可以运行在不同架构的设备,在一台设备上编译要运行在另一个平台的程序,就叫交叉编译,必须要用适应目标架构的交叉编译链。这时候,在 Ubuntu 的/home/book/nfs_rootfs 目录下,已经有了 zImage、 dtb 文件,并且有 lib/modules 子目录(里面含有各种模块)。桥接网卡用于和开发板,windows主机沟通。c是char设备,b是block设备,那两个数字呢,第一个是设备的主设备号,另一个是次设备号,次设备号对应一个设备的不同硬件部位。

2023-07-10 15:25:18 153 1

原创 FreeRTOS任务调度

虽然每个tick中断发生都会任务调度,时间片轮转时任务与任务之间都是以Tick为基本单位,但是任务不一定非要执行满一个Tick,比如调用vTaskDelay主动放弃,可以立即放弃然后另一个任务马上运行,而不需要非要等Tick。当配置为不抢占时,空闲任务是否礼让的宏已经不起作用,Idel即空闲任务必须礼让,同样的,不抢占的话,时间片轮转的宏也不起作用,时间片只支持不轮转。当然,如果高优先级想执行,而低优先级正在执行,如果不是抢占式,则只能等低优先级主动放弃,否则,即使等待的任务优先级更高,也无法执行。

2023-06-01 15:51:08 1251 3

原创 C语言知识

但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。栈,是有顺序的,就像杯子一样,从一头进出,先进后出,对应汇编指令PUSH(入栈),POP(出栈)。3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

2023-05-31 16:30:09 48

原创 FreeRTOS中时钟理解

虽然SYSCLK有多种时钟源,但一般不用我们管,ST提供的标准库函数已经配置了,选择的时钟源是外部8MHZ晶振经过PLL锁相环9倍频,即SYSCLK默认是72MHZ,然后过AHB分频器,对应寄存器默认为0,即1分频(不分频),即AHB默认也是72MHZ。Fclk为供给CPU内核的时钟信号,我们所说的cpu主频为XXXXMHz,就是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周期;再看CTRL寄存器,跳转到对应参数的定义,CLK_BIT对应CTRL的第2位,即时钟源选择,1UL

2023-05-27 22:03:45 1369

原创 FreeRTOS

FreeRTOS学习笔记,可能有水,望见谅

2023-05-26 17:45:37 107

原创 关于ROM,RAM,FLASH的个人理解

其实在flash里,上电后,根据boot引脚决定是从SRAM还是flash启动,默认就是flash启动,注意,程序不能直接在flash运行,要先将flash的程序(机器码)移动到SRAM,cpu再从SRAM里取出并执行。‘说到单片机,就不得不说寄存器,一般寄存器是指由基本的RS触发器结构衍生出来的D触发, 就是一些与非门构成的结构,有人说寄存器都在cpu内部,我个人是不认可的。在cpu的内部,确实也有寄存器,比如PC寄存器,LR寄存器等等,通常用来存储程序状态,返回地址等等。参考文章,特此鸣谢。

2023-05-14 22:49:36 1650 2

原创 Linux常识

这种连接方式,编译器默认会去编译链内的相关路径 ,可以把库文件放入编译链内部路径,也可以指定查找路径,gcc -o hello hello.o -L ./ -lhello,-L指定路径,./表示当前目录。-c表示将文件转为.o文件,比如可以把.c转为.o,也可以吧.i转为.o,也可以吧.s转为.o,也就是会根据源文件后缀,自动识别执行。可以gcc -o hello hey.c hi.c,但是不好,这样如果修改了某个文件,那么所有文件都要再经过从预处理到连接整个过程,浪费时间和资源。

2023-05-11 22:50:17 36

原创 韦东山硬件编程学习随笔

各个模式下都有自己的寄存器,比如在FIQ快速中断模式下,访问R8,出来的值是R8_fiq的值,也就是快中断自己的R8寄存器,如果没有自己的寄存器,那么进入中断时,要保存被打断的状态,这就会耗时,所以用自己的寄存器就能更快中断。下面代码,由于没有保存调用delay函数前函数执行的位置,即LR寄存器全程为0,所以当RO为0时,跳出循环,然后将LR值赋给PC,导致PC为0,然后程序下一步又开始从头执行,不断地调用Delay函数,甚至会崩溃。ADD加法,SUB减法,AND与,ORR或,BIC位清除,CMP比较。

2023-05-11 21:41:48 88

原创 嵌入式linux问题记录并解决(韦东山imx 6ull)

再试试另一种,即主机服务开启没,打开服务,找到vm开头的,全部启动,发现有vmware usbsrbition service找不到文件,无法开启,联想到每次插入usb网卡没有弹出选择连接到主机还是虚拟机,很可能这就是根本原因。要勾选DHCP,即动态获取ip,否则必须要修改虚拟机的ip地址,与虚拟网络编辑器的vnet8同一网段,这种就是静态ip,一般用于多台虚拟机需要相互合作协同,比如hadoop集群,这里不再细说。ping百度成功,进入设置看到ens33(NAT网卡)和ens36(桥接网卡)连接成功。

2023-04-25 15:16:17 237

原创 STlink无法下载?解决过程记录。

STlink无法下载?也许这里有你想要的答案。no target connected,internal command error,stlink connect error。

2023-04-22 23:30:58 3073 6

原创 ADC简介及代码示例

模数转换

2023-04-20 14:25:47 2071

原创 GPIO_EXTILineConfig分析,即AFIO配置

分析了如何配置AFIO,外部中断线配置原理。

2023-04-09 18:14:39 1478

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

然后配置NVIC,NVIC是管理中断的。EXTI一共7个寄存器,中断屏蔽寄存器(EXTI_IMR),事件屏蔽寄存器(EXTI_EMR),上升沿触发选择寄存器(EXTI_RTSR),下降沿触发选择寄存器(EXTI_FTSR),软件中断事件寄存器(EXTI_SWIER),挂起寄存器(EXTI_PR)。注意,1-4外部中断线都有自己的中断通道,即NVIC通道,5-9外部中断线共用一个通道,10-15共用一个通道。抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。

2023-04-08 23:30:47 500

原创 按键控制LED

按键控制led

2023-04-05 18:25:26 743

原创 Stm32学习之路

比如 GB2312,这种情况,无论你怎么去称呼它们,比如“GB2312编码”,“GB2312字符集”,说来说去其实都是一个东西,可能它本身就没有特意去做什么区分,所以无论怎么说都不会错。其实u是代表无符号,无符号,则最高位不表示符号。其实是为了避免重复包含头文件导致的错误,define什么意思呢,宏定义,c语言知识,宏定义作用很多,在stm32里作用主要是使寄存器配置更直观,否则就全是0x0F000000这种,很难明白对应的意思。字是什么呢,Stm32,寄存器都是32位,所以一个字就是32bit位。

2023-04-04 22:58:41 258 2

原创 Stm32之流水灯,深入了解寄存器

只需要将GPIO_Pin_0的寄存器值左移一位,就是GPIO_Pin_1的值,所以思路就有了,我的代码如下。currentmode = ((uint32_t)GPIO_InitStruct-> & ((uint32_t)0x0F) //这是将GPIO_Mode的低四位取出存入currentmode,比如OUT_PP为0x10,计算currentmode=0x10&0x0F=0001 0000 & 0000 1111=0000 0000=0x00。枚举,GPIO_Speed_2MHz=2。

2023-04-04 14:09:00 893 1

原创 用VScode伪代替keil编辑代码

vscode+keil单片机开发,让你写代码也能感到快乐

2023-04-01 16:43:40 1820 3

空空如也

空空如也

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

TA关注的人

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