C语言
文章平均质量分 52
山间朝暮-CanEve
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
rt_memheap_free报错
接着上一篇使用rt_memheap_alloc从STM32的CCMRAM上开辟数据存储空间,遇到了一个奇怪的错误,那就是用完之后的内存释放,一般使用malloc也就是rt_malloc,申请和释放一般如下。多次尝试后,发现是strdup的原因,strdup内部使用的malloc,导致需要分别使用free和rt_memheap_free。只要内存足够,这个是没有问题的,令我感到奇怪的就是使用rt_memheap_alloc后的释放。如果我依照上面的方式,使用rt_memheap_free(fields);原创 2025-04-01 10:28:45 · 240 阅读 · 0 评论 -
STM32F4系列RT-Thread开启额外的RAM(CCMRAM)
1.配置RTthread的连接文件,这里直接编辑原文件(linkscripts文件夹下),添加CCMRAM段,一般是64K。如果要使用动态内存分配rt_memheap_alloc(),还需要开启heap内存堆对象。然后使用时直接就能用了,这里rt_memory_info打印不出来变化,因为并没有统一。使用CCMRAM不能用于DMA,因为这个总线不能直接访问到,配置stm32的启动文件,RTTstudio中工程路径如下。动态使用,需要先在初始化时初始化这片内存。然后就能愉快的使用了。原创 2025-03-31 16:22:32 · 948 阅读 · 0 评论 -
BQ4050系列SMBus寄存器块数据读取
先写入0x44寄存器要读取的块地址,然后再读取0x44,但需要注意的是,发送和接收都包含数据的长度,发送还需要crc8校验。原创 2025-03-27 11:26:28 · 989 阅读 · 0 评论 -
ONE NET MQTT+HTTP多端控制
ESP8266通过MQTT上传和订阅数据我就不多赘述了,教程很多,我直接刷的MQTT固件,然后通过AT指令进行MQTT操作的。QT端和Android操作差不多,也是通过get和post。Android端发送控制指令使用的POST。ONENET简单MQTT和HTTP使用。Android端使用GET获取数据。原创 2025-02-04 15:45:45 · 936 阅读 · 0 评论 -
C语言生成常见波形数据
最近无聊,研究上C语言的一些程序,感觉波形生成还是挺有用的这里主要生成了正弦,方波,三角波 ,锯齿波,指数波形等首先看看效果,这里把生成的数据用python画了出来,程序在最后。原创 2024-08-15 23:25:35 · 1459 阅读 · 1 评论 -
C语言寻找波峰值
如果不取消注释,就会找到相同值的波峰点,和Python对比可以发现,Python的是取中间的值作为波峰,我这里如果取消注释,则只取第一个作为波峰,如果需要中间的可以自行更改。判断是否是上升段(从左往右看),其中top_width是判断的取样长度,judg_rate相当于是一个阈值,因为波形并不是完全理想的。做到项目有需要压力采集的处理,为了便于在程序中计算采集的波形数据,这里简单写一个查找波峰的程序。然后是判断是否是波峰,依据就是前段上升,后段下降,并且是最大值。最后是一些变量的创建,以及测试数据。原创 2024-08-13 14:37:16 · 1481 阅读 · 0 评论 -
CH571F蓝牙orUSB摇杆鼠标
然后是主循环,虽然好像蓝牙也有个类似于任务排序的函数,但不是很会用,所以并没有用自带的调度程序,而蓝牙程序中不能长时间被其他程序占用,不然会丢失蓝牙连接,所以我没有用延时,使用的定时器计时。程序基本上是基于官方的例程上改的,用到的例程有:蓝牙的HID_Mouse,USB的CompoundDev,还有ADC,按键中断。主要原理就是ADC采集采集摇杆电压,通过蓝牙HID或者USB的HID发送给电脑或者手机,实现鼠标功能。最后是主循环,里面就是蓝牙、USB和ADC的调用程序。原创 2024-08-04 22:54:53 · 1108 阅读 · 0 评论 -
C语言简易类json格式解析
在使用MQTT时,获取的数据基本上都是json格式的,虽然C语言也可以添加第三方的解析库,但有些资源少的单片机用着还是挺吃力的,所以自己简单写了一个从json格式中获取数据的,说白了就是一个字符串查找。不过这个只会匹配第一个字符串,如果需要匹配不同的,可以传入需要匹配的序号,就只获取对应序号的数据。其实我们需要的数据主要是id,LED,temp后面的值。获取打印出来就是这样的。原创 2024-04-25 15:50:38 · 459 阅读 · 1 评论 -
HSCMRNN030PA2A3绝压传感器简单使用
压力数据的计算公式,outputmax和outputmin都不变,pressuremax就是传感器测的最大值,我这里是30psi,同理pressuremin就是能测的最小值,我这里是0psi,代码中我计算扩大了100倍。byte1的前两位是状态位,00就是正常,byte1的后6位,和byte2一共有14位是数据,需要把byte1的后6位左移8位再加上byte2的8位共同合成压力数据。里面有个型号表,我用的就是iic协议,0~30psi(1psi=6895pa),温度和压力转化有个公式,参考霍尼韦尔的。原创 2024-02-02 09:34:24 · 521 阅读 · 0 评论 -
QT简单实现控件运动代码
原始图像和控件是这样的,绿色的为图片。红色的为一个label或者button,要实现的功能就是按下键盘的按键,控制红色向绿色的4个角落运动,类似摇杆的功能,然后还带有松开键盘自动回弹效果。松开后自动回位,这个功能是通过定时器定时判断键盘状态实现的(也包含长按键盘的处理,若不处理,会出现动画反复播放)3.键盘松开后控件自动回位。首先是监听键盘操作,参考。原创 2023-12-29 10:01:28 · 674 阅读 · 0 评论 -
OLED旋转任意角度显示,含C语言打印
实现了6x8字符和8x16字符以及16x16中文的旋转显示(旋转数组使用的16x16),不过中文在旋转时可能会出现超过显示区域的情况,因为16x16的旋转会超过这个大小,有需要的可以自行根据程序修改。6x8的字符我就不贴了,可以根据8x16的进行修改,只是我用的旋转数组为12x12。在之前90度旋转的基础上,利用旋转矩阵,完成了任意角度旋转的程序。中文会出现超出区域的情况,使用需扩大旋转和显示区域。这里我直接贴出stm32的代码。字符和中文的数组格式如下。原创 2023-12-29 09:37:42 · 1712 阅读 · 0 评论 -
OLED旋转显示方向,SH1107 软件实现屏幕内容旋转90度显示
因为屏幕驱动芯片自带的智能设置180度,并不带有90度旋转功能,所以自己写了一份简陋程序。这里只以6*8和8*16的字体为例,其他大小或者中文可以自行修改。旋转90度的程序,这里6*8和8*16都可以,只是8*16多了一格。如果显示字符串只需要吧原来的字符显示替换掉就可以了。我直接给出原版和修改后的代码。这里再给出测试用的C语言程序。原创 2023-12-13 00:26:34 · 2232 阅读 · 0 评论 -
TCP简易服务端与客户端(Linux)实训学习四
TCP简易服务端与客户端,上面的都是传入main函数的参数,main函数中的形参argc就是参数的个数,**argv就是传入参数的数组(使用方法argv[index])。在本任务中可实现对ip和端口的设定,argv[0]就是"./a.out" argv[1] 是"aaa"这个命令和printf差不多,只是会在print的同时输出最近的错误信息,可以用来打印某些步骤出错(例如socket连接)4:gets有bug,没有长度限制,可以使用fgets(buf,100,stdin);在调用程序时可以传入参数,例如。原创 2023-06-02 18:15:04 · 191 阅读 · 0 评论 -
使用C语言修图(实训学习三)
bmp图片前54字节存放的是图片的熟悉描述,不能随意修改,图片后面的内容就全是图像信息,一般都是bgr的顺序存放三基色,简单的处理就只需要对rgb值进行修改(一般都是24位,每个基色占用1字节,范围0-255)3 拼接(暂时只能拼相同宽度的图片,不同宽度会错乱)只需要把新生成的图片前一部分图像填充其中一张,后一部分填充另一张。实训安排的任务是用C语言实现bmp图片的拼接(Linux环境)按照亮度转换公式,把三基色合成亮度赋给rgb,即rgb都等于y。1 将原图全变为白色,原创 2023-05-29 00:14:10 · 199 阅读 · 1 评论 -
C语言实现简易可导出文本的用户数据库(实训学习二)
简易数据库,只保存用户名和密码原创 2023-05-21 19:57:24 · 173 阅读 · 1 评论 -
实训学习一:C语言实现简单推箱子游戏
C语言实现简单推箱子游戏,可自由修改地图(自己创建)原创 2023-05-21 19:36:16 · 502 阅读 · 1 评论
分享