- 博客(24)
- 收藏
- 关注
原创 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类型的指针变量...
2021-12-24 14:42:52 524
原创 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,所
2021-12-24 14:21:41 1610
原创 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 ]; //打印
2021-12-16 11:01:09 1015
原创 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;//计算
2021-12-15 13:11:19 1258
原创 RT-thread初学
RT-thread初学线程动态创建线程静态创建线程钩子函数定时器获取系统时间动态创建定时器静态创建定时器信号量静态创建与动态创建信号量信号量实例注意线程动态创建线程/*任务回调函数*/void rtt1_entry(void *parameter){ for(int i = 0;i<5;i++) { rt_kprintf("run1:%d\n",i); rt_thread_delay(1000); }} /*动态创建函数*/
2021-09-26 15:46:17 235
原创 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
2021-09-17 15:23:17 10006 6
转载 lua语言的学习
转载于:土神121原地址: https://www.jianshu.com/p/5927eae240ba.在lua中需要注意不要在结尾使用 ;数组的第一个元素下标 是1不是0----------------------------------------------------------------------不等于 ~=逻辑与 and逻辑或
2021-09-14 08:40:34 137
原创 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) {
2021-08-22 14:22:47 242
原创 Makefile的简单语法
Makefile的简单语法1、注解为#2、显示规则变量的使用隐含规则通配符1、注解为#2、显示规则目标文件:依赖文件[TAB]指令%.o : %.c gcc -c $<第一个目标文件是我的最终目标!!!变量的使用变量 = (替换)变量 += (追加)变量 := (恒等于)使用变量: $(变量名)隐含规则%.c %.o 任意的.c或者.o *.c *.o所有的.c .o通配符通配符$^所有的目标文件 $@所有的依赖文件 $<所有的依赖文件的第一个文件简单
2021-08-20 23:23:17 83
原创 行列式的基本定义与性质(笔记)
行列式的基本定义与性质(笔记)一级目录行列式的基本概念二阶行列式三阶行列式基本名词概念行列式的性质行列式按行展开行列式的计算一级目录行列式的基本概念二阶行列式交叉相乘,然后相减| a b || c d | = ad - cb主对角线:从左上角到右下角次对角线:从右上角到左下角三阶行列式| 1 2 3 || 4 5 6 | = 159 + 267 + 483 - 357 - 681 - 249| 7 8 9 | 计算规则:从左到右的是正,且每一组都为3个元素;从右到左的是负,且每一
2021-08-20 23:16:49 4611
原创 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而言是向
2021-08-12 15:42:40 219
原创 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启动,然后从相应的外置存储
2021-08-07 11:12:01 397
原创 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 初始化
2021-08-05 19:36:19 254
原创 ROS:参数服务器的增删改查
参数服务器的框架增加参数与修改参数代码配置修改程序实现查找参数代码配置修改程序实现删除参数代码配置修改程序实现参数服务器实现是最为简单的,该模型如下图所示,该模型中涉及到三个角色:ROS Master (管理者)Talker (参数设置者)Listener (参数调用者)ROS Master 作为一个公共容器保存参数,Talker 可以向容器中设置参数,Listener 可以获取参数。增加参数与修改参数代码#include "ros/ros.h"/* 需要实现参数的新增
2021-08-01 18:47:51 730 1
原创 ROS:客户端or服务端(服务通信)
服务通信框架创建流程创建工作空间与功能包创建srv文件与文件夹srv文件内容修改package.xml文件(配置文件1)修改CMakeLists.txt文件(配置文件2)修改功能包依赖的包列表修改自定义包依赖的包并申明自定义包编译成功服务端程序客户端程序修改cpp配置文件运行效果创建流程创建工作空间与功能包创建了一个demo06_ws的工作空间,并创建了一个plumbing_server_client的功能包创建srv文件与文件夹在功能包中创建srv文件夹,并创建AddInts.srv文件
2021-08-01 13:46:22 956
原创 ROS:msg自定义类型,话题通信
打开新创建的工作空间创建msg文件自定义变量类型中申明三个变量string nameint32 agefloat32 height修改配置文件 <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend> <build_depend>rospy</build_depend> <build_dep
2021-07-31 22:31:47 237
原创 使用VScode工具创建ROS工作空间的创建(工程文件的创建)
VScode是一款比较好用的ROS开发IDE下面介绍的ROS工程文件的创建(也就是工作空间)首先先创建一个工作空间的文件夹:$ mkdir -p ROS/demo02_ws/src
2021-07-31 12:50:02 1876 6
原创 简易可移植的多任务轮询
TaskStruct时间片轮询系统文件结构源码polling.cpolling.h使用说明task_schedule()task_process()任务创建时间片轮询系统时间片轮询法是一种比较简单易用的系统架构之一,它对于系统中的任务调度算法是分时处理。核心思路是把 CPU 的时间分时给各个任务使用。我们常用的定时方法是定时器,把调度器放在定时中,可以简单的实现时间片轮询法。需要注意的是,这种方法的前提是执行的 每个任务都是短小精悍的,要不然一个任务执行的时间过长,大于其它任务设置的时间片值,那其它任
2021-07-29 23:48:35 487
原创 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在工作空间的文件夹下,执行编译命令编译出二个文件,分别
2021-07-27 15:31:48 273
原创 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
2021-07-26 11:50:16 639 1
原创 shell脚本
第十三讲 Shell脚本编程Shell脚本简介Shell脚本是什么?shell命令按一定语法组成的文件Shell脚本有什么用?批处理文件/整合命令软件启动性能监控日志分析…Shell命令的本质内置命令/外部命令Shell脚本语言和C语言一样吗?编译型语言解释型语言常用的Shell解释器有哪些?/etc/shells第一个Shell脚本helloworld编辑、保存、改权限、运行/排错Shell启动方式当程序执行指定解释器运行source和.Sh
2021-07-23 14:24:25 84
原创 c语言指针初学
c语言指针,其实就是围绕着指针变量与取地址,读地址之间的故事。计算机是一间大房子,里面有很多的房间,每一个房间都存放这不同的数据。指针变量就是,一间特别的房间,这个房间存放的数据,他并不是拿来记录各种计算机需要的数据,而是用来记录别的房间的门牌号。指针变量:就是一块用于存放地址的变量*:一种创建指针变量的操作,或者读取地址数据的操作&:取一块数据的地址的操作int i = 20;int *p = UNLL;P=&i;*p=10;//即 i = 10这就是,最基本的指针操作
2021-05-07 17:53:29 61
原创 turtle风轮绘制
turtle库的介绍python中的turtle库即海龟库。并且引入了一个,计算机画图的画图体系,这里的海龟就好比我们现实生活里的画笔,海龟走过的路程。就是画笔画过的路径。python的头文件调用python和c语言一样,在使用一些第三方写好的函数时,需要一段调用说明,即:import turtlepython也有好c语言类似的,宏定义,即:import turtle as t这时候在下面函数的使用时,可以用t来代表turtle库名,来使用,在程序的编写中,不会太过繁琐。turtle的画
2021-04-05 18:00:03 3790 3
原创 python入门实验——温度转化
python强大的字符串python的数组格式,有一个很强大的设定。数组的正向与方向。如图我们可以进行一个,数组[0:-1]的操作,即只读取一个字符串中,除最后一位的全部字符串。强大的eval函数(评估函数)这是一个危险,又非常有趣的函数,他可以把一个字符串的“ ”去掉。甚至,可以把在一串eval(”print(“Hello”)“)程序中,让程序,展示出print(“Hello”)的效果。程序实例请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
2021-04-05 17:00:00 1502
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人