- 博客(1)
- 资源 (1)
- 收藏
- 关注
原创 【嵌入式编程踩坑记】 - 裸机 -定时器中断中套
不合理的程序设计,会产生那个另无数嵌入式工程师头疼的问题--死机 死机首先想到的是数组越界、读写空指针,其实还有一种,就是在中断中执行耗时巨大的IO操作。 如何设计代码,既能避免问题出现,又能良好地实现功能?我给大家举个例子。......
2022-08-30 01:17:19
452
xData_SL.rar 直观链表操作工具 方便做FIFO等应用 V0.01
C语言版本的直观链表创建和读取工具,隐藏了链表的操作细节
可以非常方便地在单片机等平台做FIFO应用,前提是不要用的太嗨,在极小内存的平台上建立好多个FIFO
支持多线程程序,目前尚未发现BUG
/*----------------------------
版本 : V0.01
作者 : ICARUS
日期 : 2019年6月3日
------------------------------*/
//--------------------------------------------------------------------------------------------//
内置函数
int SL_Create( ) 创建一个数据链表,返回其在系统内的ID值,创建不成功则返回 SL_R_ERR
int SL_Delete(int ID) 删除某个使用SL_Create()函数创建过的链表
int SL_InsertInturn(int ID,char* chain,int len,char ** NewNode)
向链表序号为ID的链表尾部插入chain为首地址,长度为len的数据块,数据块在系统中的内存地址将被NewNode返回,若想得到该内存地址,用(*NewNode)
使用示例:
char * NewNode;
SL_InsetInturn(5,"Hey,boy",strlen("HeyBoy\r\n"),&NewNode;);
printf("%s",*NewNode);
//------------------------------------------------------------------------------------------//
int SL_ReadInturn(int ID,char * chain)
从链表序号为ID的链表头部读取数据到chain中,若返回值大于0,则返回值为数据长度,否则读取失败或链表中已无数据可读。
这一读操作会把数据节点从链表中移除
使用示例:
int ReadLen;
char chain[1500];
ReadLen = SL_ReadInturn(5,chain);
if(ReadLen > 0)
{
.....
}
注意:由于时间原因,没有来得及修改SL_NodeModify()函数的实现,代码中注释掉的部分请先不要使用,请等待下一版本发布
使用时配合自定义的数据类型效果更佳。
2019-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人