专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
通过FIFO读取寄存器的的数值的例程
2019-10-15 01:27
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
4163
8
1324
求一个通过FIFO读取寄存器的的数值的例程
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
zgp0518
2019-10-15 19:50
[mw_shl_code=applescript,true]DataQueue GCodeQueue; //GCODE队列列表
GCodeStruct Line[LINESIZE]; //队列数组
/********************************************
函数:InitializeGCodeQueue
功能:初始化队列列表
参数:无
返回:无
********************************************/
void InitializeGCodeQueue(void)
{
GCodeQueue.Start = &Line[0];
GCodeQueue.End = &Line[LINESIZE];
GCodeQueue.In = GCodeQueue.Start;
GCodeQueue.Out = GCodeQueue.Start;
GCodeQueue.Size = LINESIZE;
GCodeQueue.Entries = 0;
}
/********************************************
函数:AddGCodeQueueEntries
功能:增加1列数据到列表
参数:无
返回:无
********************************************/
void AddGCodeQueueEntries(void)
{
EnterCritical();
*GCodeQueue.In++;
GCodeQueue.Entries++;
if (GCodeQueue.In == GCodeQueue.End)
{
GCodeQueue.In = GCodeQueue.Start;
}
ExitCritical();
while(GCodeQueue.Entries>=LINESIZE) //队列已满,等待队列
{
OS.DelayTimeTick(1);
}
}
/********************************************
函数:SubGCodeQueueEntries
功能:清除1列数据到列表
参数:无
返回:无
********************************************/
void SubGCodeQueueEntries(void)
{
while(GCodeQueue.Entries==0) //队列已空,等待队列
{
OS.DelayTimeTick(1);
}
EnterCritical();
*GCodeQueue.Out++;
GCodeQueue.Entries--;
if (GCodeQueue.Out == GCodeQueue.End)
{
GCodeQueue.Out = GCodeQueue.Start;
}
ExitCritical();
}[/mw_shl_code]
[mw_shl_code=applescript,true]#ifndef __QUEUE_H
#define __QUEUE_H
#include "stm32f10x.h"
#include "dk_config.h"
#define LINESIZE 20
typedef struct
{
GCodeStruct * Start; //指向队列开始
GCodeStruct * End; //指向队列结束
GCodeStruct * In; //插入一个消息
GCodeStruct * Out; //取出一个消息
u8 Size; // 队列长度
u8 Entries; //消息长度
}DataQueue;
extern DataQueue GCodeQueue;
void InitializeGCodeQueue(void);
void AddGCodeQueueEntries(void);
void SubGCodeQueueEntries(void);
#endif[/mw_shl_code]
加载中...
查看其它8个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
GCodeStruct Line[LINESIZE]; //队列数组
/********************************************
函数:InitializeGCodeQueue
功能:初始化队列列表
参数:无
返回:无
********************************************/
void InitializeGCodeQueue(void)
{
GCodeQueue.Start = &Line[0];
GCodeQueue.End = &Line[LINESIZE];
GCodeQueue.In = GCodeQueue.Start;
GCodeQueue.Out = GCodeQueue.Start;
GCodeQueue.Size = LINESIZE;
GCodeQueue.Entries = 0;
}
/********************************************
函数:AddGCodeQueueEntries
功能:增加1列数据到列表
参数:无
返回:无
********************************************/
void AddGCodeQueueEntries(void)
{
EnterCritical();
*GCodeQueue.In++;
GCodeQueue.Entries++;
if (GCodeQueue.In == GCodeQueue.End)
{
GCodeQueue.In = GCodeQueue.Start;
}
ExitCritical();
while(GCodeQueue.Entries>=LINESIZE) //队列已满,等待队列
{
OS.DelayTimeTick(1);
}
}
/********************************************
函数:SubGCodeQueueEntries
功能:清除1列数据到列表
参数:无
返回:无
********************************************/
void SubGCodeQueueEntries(void)
{
while(GCodeQueue.Entries==0) //队列已空,等待队列
{
OS.DelayTimeTick(1);
}
EnterCritical();
*GCodeQueue.Out++;
GCodeQueue.Entries--;
if (GCodeQueue.Out == GCodeQueue.End)
{
GCodeQueue.Out = GCodeQueue.Start;
}
ExitCritical();
}[/mw_shl_code]
[mw_shl_code=applescript,true]#ifndef __QUEUE_H
#define __QUEUE_H
#include "stm32f10x.h"
#include "dk_config.h"
#define LINESIZE 20
typedef struct
{
GCodeStruct * Start; //指向队列开始
GCodeStruct * End; //指向队列结束
GCodeStruct * In; //插入一个消息
GCodeStruct * Out; //取出一个消息
u8 Size; // 队列长度
u8 Entries; //消息长度
}DataQueue;
extern DataQueue GCodeQueue;
void InitializeGCodeQueue(void);
void AddGCodeQueueEntries(void);
void SubGCodeQueueEntries(void);
#endif[/mw_shl_code]
一周热门 更多>