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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版