- 博客(241)
- 收藏
- 关注
原创 STM32启动文件浅析
STM32启动文件由ST官方提供,在官方的固件包里。启动文件由汇编编写,是系统上电复位后第一个执行的程序。初始化堆栈指针初始化程序计数器指针设置堆和栈的大小初始化中断向量表配置外部SRAM作为数据存储器(可选)配置系统时钟,通过调用SystemInit函数(可选)调用C库中的 _main 函数初始化用户堆栈,最终调用 main 函数ARM指针寄存器 —— 堆栈指针寄存器SP、程序计数器PC、连接寄存器LR堆栈指针R13(SP)
2024-10-21 19:54:54 1369
原创 Linux操作常用问题
将“compatible”改成“nocompatible”非兼容模式就可以解决方向键变ABCD的问题了。编辑/etc/systemd/resolved.conf文件来修改DNS,结果编辑时键盘乱码,按下方向键会出现ABCD,且回退键也不能删除。输入下面的命令,编辑文件/etc/vim/vimrc.tiny,将“compatible”改成“nocompatible”非兼容模式;
2024-09-30 10:50:01 310
原创 C/C++常用错误 or 规范注意
之前做过关于python报错集(未来如果出现一些有意义的错误还是会继续更新的),今天记录一下C/C++的一些常见错误(可能其实不算error,只是根据规范,尽量提升代码质量)
2024-05-20 16:28:10 287
原创 多核和多处理器的区别
多核系统具有一个带有多个处理单元的处理器;这些处理单元称为核心。多处理器系统具有两个或更多处理器;多处理器系统比多核系统可靠的多,但多处理器系统与多核系统相比具有更复杂的配置。多核处理器和多处理器系统都用于加速系统的计算过程。众所周知,处理器/CPU是计算机的大脑,它负责计算机的所有功能;CPU的执行单元称为核心,核心的主要功能是读取和执行指令,这些指令可以有多种形式,包括计算、数据传输、分支等;具有单核的处理器称为Unicore处理器,但具有两个或更多核心的处理器称为多核处理器;
2024-04-25 22:08:18 1196
原创 Shell学习
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 … 值n)# 或者value0value1value2value3# 还可以单独定义数组的各个分量:可以不使用连续的下标,而且下标的范围没有限制。
2024-04-23 17:38:27 648
原创 HomePlug AV
由于交流电力线的噪声随交流电周期同步,不同的相位噪声不同,如峰值附近噪声最大,因此,把一个Beacon周期分为不同的时间片Slot,每个时间片单独进行信道评估,进行信道训练,获取bit分配图(Tone Map),以获取最优性能,否则只能按照最初噪声来适应线路。属于同一个AVLN网络的两个STA,是可以互相通信的,即使他们不在同一物理网络中。如上图网络C中的,A、B和C、D不在同一网络,但也是可以相互通信的。FC采用单独的编码( 1/2 FEC),使用更多的拷贝方式,使得数据传输更可靠。
2024-04-02 16:13:37 1706 1
原创 PLC常用通信协议应用
Modbus是一种标准通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus协议是一个1.即仅一设备(主设备)能初始化传输(查询),其它设备(从设备)根据主设备查询提供的数据作出相应反应;理论上最多支持247(10进制)台从设备。2.主设备可单独和从设备通信,也能以**广播方式(站号0)**和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。
2024-03-21 11:15:56 1909
原创 理解C++ 11新特性
可以说,这种情况下,只提供非引用类型的版本,也是可以接受的。而std::move()的实现还需要先移除形参的所有引用性质得到无引用性质的类型(假设为T2),然后再return static_cast(形参),从而保证不会发生引用折叠,而是直接作为右值引用类型的值返还(返还值为右值)。因此,这里也不建议函数返还右值引用类型,同前面传递参数类似的,移动构造开销不大的时候,直接返还非引用类型就足够了(在某些特殊场合有特别作用,准确来说一般用于表示返还成一个右值,如std::move的实现)。
2024-02-07 15:45:59 888
原创 汽车网络架构与常用总线汇总
是控制器局域网Controller Area Network 的缩写,1986年,由德国Bosch公司为汽车开发的网络技术,主要用于汽车的监测与控制,目的为适应汽车“减少线束的数量”“通过多个网络进行大量数据的高速传输”的需求。汽车网络是将汽车上所有电子传感器、执行器和电子控制单元(ECU)连接组网的通信形式。根据通信速率,汽车工程师协会(SAE)定义了如下类别的汽车网络。并接到同一总线时,只要其中一个节点输出低电平,总线就为低电平;定义:CAN收发器逻辑信号和物理信号之间的转换采用。
2024-01-23 15:12:32 1991
原创 UDS诊断
网络层功能PDU说明7E0h 8 02 10 01 55 55 55 55 55N_PCI结构例子:FS含义BS含义STmin含义将N_PDU映射到CAN数据帧的不同位置,构成了4种地址格式SF_DL错误:SF_DL=0或者SF_DL > 7(常规寻址)FF_DL错误SN错误FS错误N_WFTmax
2024-01-22 11:41:05 598
原创 SSM整合
环境要求IDEAMySQL 8Tomcat 9.0.52Maven 3.6要求:需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;数据库环境创建一个存放书籍数据的数据库表CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` ( `bookID` INT(10) NOT NULL AUTO_INCREME
2022-04-04 18:56:24 391
原创 SpringMVC环境下关于DispatcherServlet的错误
在学习狂神的SpringMVC讲解视频时,P6构建HelloController.java类后启动tomcat后,报了404(一开始报500,然后是因为tomcat的配置出问题了,,,不过解决了)再检查代码(有关路径的部分时),一直改路径,但是都没有啥用后来以为是mvc依赖版本过高了,降了版本后,发现并没什么用<dependency> <groupId>org.springframework</groupId> <artifactId>
2022-03-23 02:51:03 2293 2
原创 SpringMVC学习笔记
MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。View(视图) - 视图代表模型包含的数据的可视化。Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。是将业务逻辑、数据、显示分离的方法来组织代码MVC主要作用是降低了视图与业务逻辑间
2022-03-12 22:56:20 254
原创 Spring学习笔记
Spring框架Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益 -----(摘自百度百科)Spring:春天 —> 给软件行业带来了春天2002,首次推出了Spring框架的雏形:interface 21框架Spring框架即以interface 21框架为基础,经过重新设计,并不
2022-02-08 21:01:44 743
原创 AJAX学习笔记
AJAX = Asynchronous JavaScript and XML(异步的JavaScript和XML)AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术AJAX不是一种新的编程语言,而是一种创建更好更快以及交互性更强的Web应用程序的技术在2005年,Google通过其Google Suggest使AJAX变得流行起来。Google Suggest使用AJAX创造出动态性极强的web界面:当您在谷歌的搜索框输入关键字时,JavaScript会把这些字符发送到服务器,然后
2022-01-29 20:15:36 946
原创 Java多线程学习笔记
参考B站狂神说视频讲解多任务在平时的生活中:我们一边在吃饭,一边看玩手机,还随便看会电视…一边上厕所,一边玩手机……现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情多线程原来只有一条道路,慢慢因为车太多了,道路堵塞,效率极低。为了提高使用的效率,能够充分利用道路,于是加了多个车道。从此,妈妈再也不用担心道路堵塞了。如果你和你姐只有一个王者号,那是不是玩起来一点也不快乐。但是如果有两个号,你们可以同时登录在线,还可以一起排
2022-01-25 19:17:06 497
原创 C语言指针学习
在学习指针之前,先让我们了解一下内存内存存储器:存储数据器件外存:外存又叫外部存储器,长期存放数据,掉电不丢失数据常见的外存设备:硬盘、flash、ROM、U盘、光盘、磁带内存:内存又叫内部存储器,暂时存放数据,掉电数据丢失常见的内存设备:RAM、DDR物理内存:实实在在存在的存储设备虚拟内存:操作系统虚拟出来的内存我们可以把内存想象成一列很长很长的货运火车,有很多大小相同的车厢,而每个车厢正好相当于在内存中表示一个地址。这些车厢装着不同的货物,就像我们的内存要存着各
2022-01-23 13:04:45 608
原创 嵌入式基础知识笔记
边学习,边总结基地址和偏移地址打个比方,你找一个403房间,你要先到4楼,然后找第三个房间,那就是403。在这里,4楼就是基地址,3就是偏移地址。在arm中也是一样的,实际的地址就是基地址+偏移地址...
2022-01-05 20:25:45 417
原创 SpringBoot学习笔记
微服务阶段JavaSE:面向对象MySql + JDBC:持久化存储html + css +JavaScript + Jquery + 框架:视图,框架JavaWeb:开始独立开发MVC三层架构的网站(原始)SSM:框架(简化了我们的开发流程,配置也开始较为复杂)war:Tomcat运行Spring再简化:SpringBoot - Jar(内嵌Tomcat)- 微服务架构SpringCloud:SpringSpring是一个开源框架,2003年兴起的一个轻量级的Java开发框架
2022-01-05 20:13:15 5919 5
原创 力扣刷题—两数之和
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。思路:这道题本身很简单,但是力扣的答题模式让我很是抓狂。不说废话
2022-01-02 01:13:42 242
原创 Nginx学习笔记
参考B站狂神说视频讲解Nginx简介公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部Tomcat返回内容给用户但慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器,通过代理服务器来帮我们转发和处理请求。我们希望这个代理服务器可以帮助我们接受用户的请求,然后将用户的请求按照规则帮我们转发
2022-01-01 22:46:15 1268 1
原创 Java注解和反射
参考B站狂神说,整理笔记1、什么是注解Annotation是从JDK5.0开始引入的新技术Annotation的作用:不是程序本身,可以对程序做出解释。(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取 可以实现动态型Annotation的格式:注解是以 “@注释名” 在代码中存在的,还可以添加一些参数值,例如: @SuppressWarnings(value=“unchecked”).注解还有检查规范名Annotation在哪里使用:可以附加在p
2021-12-25 22:42:57 506
原创 python报错集
本人学python有段时间了,无论是基础部分、爬虫、连接硬件,还是写简单的接口;多多少少会遇到一些报错问题。但一直没总结,导致很多时候会犯同样的错。所以在这里会慢慢总结一下自己在使用python出现的一些问题和解决办法1、运行scrapy代码时例如:我创建一个scrapy项目,并启动时(scrapy crawl qiubai),报错。。。总结一下:就是报 AttributeError: ‘TelnetConsole’ object has no attribute 'port’我的解决办法:找到
2021-12-20 23:49:09 1083 2
原创 JavaWeb期末复习
一、选择题1、一个Servlet可以被映射的虚拟路径个数是( D )。A、0B、1C、2D、多2、 下列方法中,哪个不是Servlet接口中的方法( D )。A、initB、serviceC、getServletInfoD、getServlet3、以下哪个是Web服务器( C )。A、JCreatorB、JBuilderC、TomcatD、Eclipse4、在表单里,用于发送敏感数据的方法( B )。A.GETB.POSTC.PUTD.OPTIONS5、下面
2021-12-15 16:55:10 4988
原创 UCOSIII存储管理
1.1、存储管理作为一个RTOS操作系统,内存管理是必备的功能,因此UCOSIII也就内存管理能力。通常应用程序可以调用ANSI C编译器的 malloc()和free()函数 来动态的分配和释放内存,但是在嵌入式实时操作系统中最好不要这么做,多次这样的操作会把原来很大的一块连续存储区域逐渐地分割成许多非常小并且彼此不相邻的存储区域,这就是存储碎片UCOSIII中提供了一种替代 malloc()和free() 函数的方法,UCOSIII中将存储空间分成区和块,每个存储区有数量不等大小相同的存储块,在一个
2021-12-07 12:13:40 948
转载 UCOSIII事件标志组和同时等待多个内核对象
1.1、事件标志组有时候一个任务需要与多个事件同步,这个时候就需要使用事件标志组。事件标志组与任务之间有两种同步机制:“或”同步和“与”同步“或同步”:等待多个事件时,任何一个事件发生,任务都被同步,这个就称为“或”同步“与”同步:当所有的事件都发生时任务才被同步,这种同步机制都被称为“与”同步在UCOSIII中事件标志组为 OS_FLAG_GRP,如果需要使用事件标志组的时候需要将宏 OS_CFG_FLAG_EN置1...
2021-12-03 12:57:26 311
原创 JSP基础和EL表达式、JSTL
一、JSP1.1、JSP简介JSP全称是Java Server Pages,它和servle技术一样,都是一种用于开发动态web资源的技术。JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。它与html页面的作用是相同的,获取数据和显示数据1.2、JSP原理JSP的本质是Servlet,具体过程在第一次访问JSP时,被编译成一个java类,继承HttpJspBase,它最
2021-12-01 23:36:09 395
原创 UCOSIII消息队列
1、UCOSIII任务间通信1.1、任务间通信:一个任务或者中断服务程序有时候需要和另一个任务交流信息 ,这个就是消息传递的过程就叫做任务间通信,任务间的消息传递可以通过2种途径:一是全局变量,二是通过发布消息使用全局变量的时候每个任务或者中断服务程序都必须保证其对全局变量的独占访问。消息也可以通过消息队列作为中介发布任务。什么是消息?消息包含以下几个部分:指向数据的指针,数据的长度和记录消息发布的时间戳,指针指向的可以是一块数据区域或者甚至是一个函数。消息的内容必须一直保持可见性,可见性是指代
2021-12-01 03:00:37 758
原创 UCOSIII信号量和互斥信号量
1、UCOSIII信号量1.1、信号量简介:信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味着该任务具有进入被锁部分代码的权限。一旦执行至被锁代码段,则任务一直等待,直到对应被锁部分代码的钥匙被再次释放才能继续执行。信号量用来控制对共享资源的保护,但是现在基本用来做任务同步用要想获取资源的任务必须执行 “等待” 操作,如果该资源对应的信号量有效值大于1,则任务可以获得该资源,任务继续运行。如果该信号量的有效值为0,则任务加入等待信号量的任务表中。如果等待时间超过某
2021-11-19 23:56:20 850
原创 无线传感网络
第一、二章无线传感网络的定义:无线传感网络是大量的静止节点或移动的传感器以自组织和多跳的方式构成的无线网络,目的是协作地探测、处理和传输网络覆盖区域内感知对象的监测信息,并报告给用户。传感器节点的限制:电源能量有限通信能力有限计算和存储能力有限无线传感网络特点:自组织性以数据为中心应用相关性动态性网络规模大可靠性无线传感网络的系统性能指标:工作寿命覆盖范围搭建成本以及难易程度响应时间传感器的组成:敏感元件转换元件基本转换电路传感器的分类:按被
2021-11-19 14:28:00 12092
转载 UCOSIII软件定时器
1、UCOSIII软件定时器简介1.1、软件定时器简介:定时器本质是递减计数器,当计数器减到零时可以触发某种动作的执行,这个动作通过回调函数实现。当定时器计时完成时,定义的回调函数就会被立即调用,应用程序可以有任意数量的定时器,UCOSIII中定时器的时间分辨率有一个 OS_CFG_TMR_TASK_RATE_HZ,单位为HZ,默认为100HZ注意!一定要避免在回调函数中使用阻塞调用或者可以阻塞或删除定时器任务的函数。回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另
2021-11-19 00:39:52 562
原创 UCOSIII中断和时间管理
1.1、UCOSIII中断:中断:应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。如何在UCOSIII下编写中断服务函数!void USART1_IRQHandler(void){ OSIntEnter(); // 中断服务程序 OSIntExit();}串口中断服务函数:void USART1_IRQHandler(void) //串口1中断服务程序 { u8 Res;#ifdef SYSTEM_SUPPORT
2021-11-18 01:56:15 729
原创 UCOSIII系统任务
1.1、空闲任务:空闲任务特点:空闲任务是UCOSIII创建的第一个任务空闲任务是UCOSIII必须创建的空闲任务优先级总是为 OS_CFG_PRIO_MAK-1空闲任务中不能调用任何可使空闲任务进入等待态的函数空闲任务函数:void OS_IdleTask (void *p_arg){ CPU_SR_ALLOC(); p_arg = p_arg; /* Prevent compi
2021-11-14 15:56:44 402
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人