你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32进阶之串口环形缓冲区实现  

[复制链接]
xiaojie0513 发布时间:2018-6-4 09:49
阅读主题, 点击返回1楼
收藏 8 评论112 发布时间:2018-6-4 09:49
112个回答
xiaojie0513 回答时间:2018-6-4 17:57:19

没你事了哈哈哈哈
布丁奶茶 回答时间:2018-6-4 21:10:31


看看再说
xself 回答时间:2018-6-4 21:32:18
谢谢分享
xiaojie0513 回答时间:2018-6-4 23:28:38

谢谢支持
darren_liu 回答时间:2018-6-6 08:41:45
还不错。。。其实呢,搞懂数据结构这本书后,这些都是小意思,难点高的是树什么的!!!
wugenchao-14878 回答时间:2018-6-7 20:34:57
看看那
roguebear2012 回答时间:2018-6-7 21:11:46
给lz看一个移植的linux的串口fifo 用在stm32上的。
#include <kfifo.h>




int __kfifo_init(struct __kfifo *fifo, void *buffer, unsigned int size)
{
    fifo->in = 0;
    fifo->out = 0;
    fifo->mask = 0;
    fifo->data = buffer;

    if (size < 2) {
        return -1;
    }

    if ((size & (size-1)) != 0)
    {
        return -2;            /*** Must be a power of 2 (2,4,8,16,32,64,128,256,512,...) ***/
    }

    fifo->mask = size - 1;

    return 0;
}





unsigned int __kfifo_push_char(struct __kfifo *fifo,  const char *p)
{

    if(( ( fifo->in - fifo->out ) & ( ~fifo->mask ) ) == 0 )
    {
        *( (char*)fifo->data + (fifo->in++ & fifo->mask) ) = *p;

        return 1;
    }

    return 0;
}





unsigned int __kfifo_pop_char(struct __kfifo *fifo, char* p )
{
    if( fifo->in != fifo->out )
    {
        *p =  *(  (char*)fifo->data + (fifo->out++ &  fifo->mask) ) ;

        return 1;
    }

    return 0;
}



gdgly 回答时间:2018-6-9 10:56:37
xiaojie0513 回答时间:2018-6-9 11:13:56
roguebear2012 发表于 2018-6-7 21:11
给lz看一个移植的linux的串口fifo 用在stm32上的。
#include

大。。。。大。。。。大佬
八五哥 回答时间:2018-6-9 16:35:20
这个写得是非常不错了。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版