C语言之define与typedef的区别 在下面举一个例子#define IP int *typedef int *IP一眼看过,好像这两种形式,没有区别#define IP int *IP p,q;//这个代码就等价与int *p,q;这个就是定义了一个int指针变量和一个int变量但是如果使用typedefIP p,q;//这个代码就等价与int *p,*q;创建的就是两个int类型的指针变量...
C语言之动态内存管理 C语言之动态内存管理1、动态内存主要涉及的函数2、原则3、内存错误案例4、野指针1、动态内存主要涉及的函数void *malloc(size_t size);void free(void *ptr);void *calloc(size_t nmemb, size_t size);void *realloc(void *ptr, size_t size);2、原则谁申请谁释放3、内存错误案例在这个案例中,出现了严重的地址泄漏。因为,P通过传参过去,函数里面的P已经和主函数的不是一个*P,所
c语言数组练习题 1、fibonacci数列的前十项,并实现逆序排列#define FIB_SUM 10static void test1(void){ int fib[FIB_SUM] = { 1 , 1 }; //正序 for( int i = 2 ; i < FIB_SUM ; i++ ) fib[ i ] = fib[ i - 1 ] + fib[ i - 2 ]; //打印
c语言流程控制习题练习 题目1:A以10%的单利息投资了100美元,B以每年5%复合利息投资了100美元。编写一程序,计算需要多少年B的投资总额才会超过A的投资总额度,并且显示出到那个时刻两个人的各自的资产总额。#define MONEY_A 100#define MONEY_B 100static void test1(void){ //初始化A,B的金额为100 float A = MONEY_A , B = MONEY_B; int num = 0;//计算
RT-thread初学 RT-thread初学线程动态创建线程静态创建线程钩子函数定时器获取系统时间动态创建定时器静态创建定时器信号量静态创建与动态创建信号量信号量实例注意线程动态创建线程/*任务回调函数*/void rtt1_entry(void *parameter){ for(int i = 0;i<5;i++) { rt_kprintf("run1:%d",i); rt_thread_delay(1000); }} /*动态创建函数*/
stm32移植U8G2图像库指南 stm32移植U8G2图像库指南U8G2图形库介绍移植准备工作开始移植文件修改keil配置修改U8G2源码u8g2_d_setup.c修改u8g2_d_memory.c修改注意U8G2接口程序最终效果U8G2图形库介绍U8g2:用于单色显示的库,版本 2U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,包括以下控制器:SSD1305, SSD1306, SSD1309, SSD1316, SSD1320, SSD1322, SSD1325, SSD1327, SSD1329
lua语言的学习 转载于:土神121原地址: https://www.jianshu.com/p/5927eae240ba.在lua中需要注意不要在结尾使用 ;数组的第一个元素下标 是1不是0----------------------------------------------------------------------不等于 ~=逻辑与 and逻辑或
c工程错误定位(封装printf实现的错误等级和错误代码位置提示) 实现了代码报错的等级显示和代码行数显示使用了c语言的动态传参需要使用到这个头文件 #include “stdarg.h”具体内容可以看这个网站链接: https://www.runoob.com/cprogramming/c-standard-library-stdarg-h.html.#include "log.h"/*简要:打印任务等级读取接口*/static char *EM_LOGLevelGet(const int level){ switch(level) {
Makefile的简单语法 Makefile的简单语法1、注解为#2、显示规则变量的使用隐含规则通配符1、注解为#2、显示规则目标文件:依赖文件[TAB]指令%.o : %.c gcc -c $<第一个目标文件是我的最终目标!!!变量的使用变量 = (替换)变量 += (追加)变量 := (恒等于)使用变量: $(变量名)隐含规则%.c %.o 任意的.c或者.o *.c *.o所有的.c .o通配符通配符$^所有的目标文件 $@所有的依赖文件 $<所有的依赖文件的第一个文件简单
行列式的基本定义与性质(笔记) 行列式的基本定义与性质(笔记)一级目录行列式的基本概念二阶行列式三阶行列式基本名词概念行列式的性质行列式按行展开行列式的计算一级目录行列式的基本概念二阶行列式交叉相乘,然后相减| a b || c d | = ad - cb主对角线:从左上角到右下角次对角线:从右上角到左下角三阶行列式| 1 2 3 || 4 5 6 | = 159 + 267 + 483 - 357 - 681 - 249| 7 8 9 | 计算规则:从左到右的是正,且每一组都为3个元素;从右到左的是负,且每一
I.MX6U开发板:LED C语言驱动实验 一、c语言运行环境构建1、设置处理器模式设置6ULL处于SVC模式下。设置CPSR寄存器的bit4 - 0为10011(0x13)。读写状态寄存器,需要用到MRS和MSR指令。MRS将CPSR寄存器数据读出到通用寄存器里,MSR指令将通用寄存器的值写入CPSR寄存器里面去。2、设置SP指针Sp可以指向内部RAM,也可以指向DDR,我们将其指向DDR。Sp设置到哪里?512MB的范围0x80000000 - 0x9FFFFFFF。栈大小,0x200000 = 2MB。处理器栈增长模式,对于A7而言是向
IMX启动方式笔记 一、硬件启动方式选择1、启动方式的选择LED灯实验,是从SD卡读取bin文件并启动,说明6UL支持从SD卡启动。6ULL支持多种启动方式。6ULL是怎么支持从多种外置flash启动程序的。(阅读6ULL参考手册第8章)启动方式选择(8.2.1章):BOOT_MODE0和BOOT_MODE1,这两个是两个IO来控制的。选择从USB启动还是内部BOOT启动。如果要烧写系统到开发版中可以选择从USB下载或者下载到SD卡、EMMC、NADN等外置存储中。烧写完成以后从内部BOOT启动,然后从相应的外置存储
I.MX6U开发板:LED汇编驱动实验 实验分析为什么要学习Cortea-A 汇编:1.需要用汇编初始化一些SOC外设2.使用汇编初始化DDR(I.MX6U不需要)3.设置sp指针,一般指向DDR,设置好C语言运行环境实验学习板电路分析:这里使用的正点原子的阿尔法开发板看见灯是一个3.3v上拉的电路,所以需要芯片下拉才能把灯点亮然后,找到LED0接着的是I.MX的GPIO1_3的银角(原理图里的GPIO_3就是GPIO1_3)接下来的操作就是配置I.MX的内部寄存器,让GPIO1_3输出低电平。STM32 IO 初始化
ROS:参数服务器的增删改查 参数服务器的框架增加参数与修改参数代码配置修改程序实现查找参数代码配置修改程序实现删除参数代码配置修改程序实现参数服务器实现是最为简单的,该模型如下图所示,该模型中涉及到三个角色:ROS Master (管理者)Talker (参数设置者)Listener (参数调用者)ROS Master 作为一个公共容器保存参数,Talker 可以向容器中设置参数,Listener 可以获取参数。增加参数与修改参数代码#include "ros/ros.h"/* 需要实现参数的新增
ROS:客户端or服务端(服务通信) 服务通信框架创建流程创建工作空间与功能包创建srv文件与文件夹srv文件内容修改package.xml文件(配置文件1)修改CMakeLists.txt文件(配置文件2)修改功能包依赖的包列表修改自定义包依赖的包并申明自定义包编译成功服务端程序客户端程序修改cpp配置文件运行效果创建流程创建工作空间与功能包创建了一个demo06_ws的工作空间,并创建了一个plumbing_server_client的功能包创建srv文件与文件夹在功能包中创建srv文件夹,并创建AddInts.srv文件
ROS:msg自定义类型,话题通信 打开新创建的工作空间创建msg文件自定义变量类型中申明三个变量string nameint32 agefloat32 height修改配置文件 <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend> <build_depend>rospy</build_depend> <build_dep
使用VScode工具创建ROS工作空间的创建(工程文件的创建) VScode是一款比较好用的ROS开发IDE下面介绍的ROS工程文件的创建(也就是工作空间)首先先创建一个工作空间的文件夹:$ mkdir -p ROS/demo02_ws/src
简易可移植的多任务轮询 TaskStruct时间片轮询系统文件结构源码polling.cpolling.h使用说明task_schedule()task_process()任务创建时间片轮询系统时间片轮询法是一种比较简单易用的系统架构之一,它对于系统中的任务调度算法是分时处理。核心思路是把 CPU 的时间分时给各个任务使用。我们常用的定时方法是定时器,把调度器放在定时中,可以简单的实现时间片轮询法。需要注意的是,这种方法的前提是执行的 每个任务都是短小精悍的,要不然一个任务执行的时间过长,大于其它任务设置的时间片值,那其它任
ROS创建工作空间与功能包 1.什么是工作空间工作空间是一个存放工程开发相关文件的文件夹src:代码空间build:编译空间devel:开发空间install:安装空间注:ROS的开发空间与安装空间合成了一个空间2.创建工作空间$ mkdir -p ~/catkin_jx/src$ cd ~/catkin_jx/src/$ catkin_init_workspace 3.编译工作空间$ cd ~/catkin_jx/$ catkin_make在工作空间的文件夹下,执行编译命令编译出二个文件,分别
ROS(小海龟仿真) ROS常用命令:启动ROS:$ roscore启动小海龟仿真器:$ rosrun rurtlesim turtlesim_node启动海龟控制节点:$ rosrun turtlesim turtle_teleop_key开启ROS节点工具视图:$ rqt_graphROS查看话题:$ rosnode list ROS话题具体信息查询:$ rosnode info /turtlesimROS话题发布监控:$ rostopic echo /tur