标签: c

如何处理嵌入式C中的包装计数器

我需要处理一个计数器,它为我的应用程序提供了滴答声.计数器是32位,所以我需要知道的是如何在它包装时处理它.例如:

我有一个函数返回一个(timestamp + shifttime),我有另一个函数将返回1或0取决于时间是否已经过去,但我的计数器可能会包装如何处理这个? .

谢谢

非常感谢所有回复的人.我将在此编辑中提供更多详细信息.

我使用的是STM32 Cortex-M3.我想使用RTC计数器将其用作我的应用程序的滴答,以安排需要以特定间隔发生的任务.RTC可以产生溢出中断,因此检测中断不是问题.我遇到的主要问题(或者至少我认为是一个问题)是某些任务获得(时间戳+班次),即.


int main( void )
{
FlashLedTimeStamp = ReturnCounter( 20 );  // currentcounter value + a shift of 20
StatusLedTimeStamp = ReturnCounter( 3 );  // currentcounter value + a shift of 3

//then later on ....
while(1)
{
    /* other tasks could go here */

    if( HasTimeElapsed( FlashLedTimeStamp );
    {
       /* do something and get another timestamp value */
       FlashLedTimeStamp = ReturnCounter( 20 );  // currentcounter value + a shift of 20 …
Run Code Online (Sandbox Code Playgroud)

c embedded integer-overflow

12
推荐指数
4
解决办法
2万
查看次数

如何在C中处理重复的函数名?

我有一个小项目,我在两个不同的源文件中命名了两个相同的名称函数,但是在构建项目时,编译器失败,并且'filename已经在filename.obj中定义了'func_name'.

为什么我不能在两个不同的源文件中有两个具有相同名称的函数?我认为该函数应该是源文件的本地函数,只有当我们在头文件中声明它将变为全局时.

除了更改文件名外,C编程语言中是否还有其他优雅的复制函数名称解决方案?

c naming-conventions

12
推荐指数
4
解决办法
1万
查看次数

是否有C的库存储库?

可能重复:
为什么没有全面的c档案网络?

每个人都知道C语言非常小,它只有语言原语,几乎没有标准库(没有数据结构或算法).

因此,我有一个问题,如何找到适合数据结构,算法和系统编程的优秀C库?

例如,如果我需要一个哈希表,我如何找到一个好的实现?或者,例如,如果我需要使用图表,我该怎么办?

到目前为止,我一直在写一切.但是我的哈希表实现还不够好.这是非常基本的.

高级C程序员对这个问题做了什么?他们真的会再次自己写所有的图书馆吗?

谢谢,Boda Cydo.

c repository libraries

12
推荐指数
2
解决办法
2702
查看次数

为什么unsigned int x = -1和int y = ~0具有相同的二进制表示?

在以下代码段中将是:

  • 功能的结果
  • x的值
  • y的值
    {
         unsigned int x=-1;
         int y;
         y = ~0;
         if(x == y)
             printf("same");
         else
             printf("not same");
     }
a. same, MAXINT, -1
b. not same, MAXINT, -MAXINT
c. same , MAXUINT, -1
d. same, MAXUINT, MAXUINT
e. not same, MAXINT, MAXUINT

有人可以解释我的工作原理或者只是解释一下片段吗?

我知道它是关于两个补码n等.MAXINT和-1的意义是什么?这是因为unsigned int和int的事情 - 我是对的吗?

c binary

12
推荐指数
3
解决办法
6883
查看次数

在C中是malloc(256)和malloc(sizeof(char)*256)等价吗?

我看到人们经常编写C代码,例如:

char *ptr = malloc(sizeof(char)*256);
Run Code Online (Sandbox Code Playgroud)

这真的有必要吗?标准说,sizeof(char)==1根据定义,只写这样有意义:

char *ptr = malloc(256);
Run Code Online (Sandbox Code Playgroud)

谢谢,Boda Cydo.

c malloc pointers sizeof

12
推荐指数
2
解决办法
8885
查看次数

如何在C中序列化数据

我在c中编写服务器 - 客户端应用程序,需要来回发送一些结构.

如何以独立于平台的方式序列化数据?

c serialization

12
推荐指数
1
解决办法
6250
查看次数

C/C++:如何找出给定定义的头文件链?

在Visual C++,可以发现,其中任何头文件(变量或类型)定义通过按F12在其上或选择转到定义.此功能非常有用,但它仅显示定义名称的最终位置(头文件).有没有办法找出从我的源文件到给定名称的最终头文件的头文件

例如,考虑以下代码:

// main.cpp    
#include <stddef.h>
int main()
{
    size_t s;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Visual C++ 2010中,如果我查看size_t上面的定义main.cpp,它会将我置于一个名为的文件中sourceannotations.h.我知道这个标题链以stddef.h(我已经包含)开头并以结尾sourceannotations.h.如何弄清楚这个链中间的链接?

c c++ header visual-studio visual-c++

12
推荐指数
1
解决办法
3014
查看次数

用C++编写的*any*流行编程语言解释器的主要实现是什么?

目前我正在考虑是否要重写我在C++中维护的编程语言解释器.解释器目前在C中实现.

但我想知道,这是主要的实现 - 因为,当然,人们已经使用了一种语言而不是原始作者所使用的语言 - 现在使用C++编写的任何流行的编程语言解释器?

如果没有,是否有充分的理由不在C++中编写解释器?据我所知,如果编写正确,C++代码可以非常轻松,并且可以编译运行,就像执行相同操作的编译C代码一样快.

c c++ interpreter

12
推荐指数
2
解决办法
889
查看次数

C中这两种typedef样式有什么区别?

我很好奇当typedefing一个枚举或结构时,这里的区别是什么.这两个块之间在语义上有什么区别吗?

这个:

typedef enum { first, second, third } SomeEnum;
Run Code Online (Sandbox Code Playgroud)

还有这个:

enum SomeEnum { first, second, third };
typedef enum SomeEnum SomeEnum;
Run Code Online (Sandbox Code Playgroud)

结构相同的交易.我已经看到两者都在使用,他们似乎都在C或Objective-C中做同样的事情.是否存在真正的差异,或者只是偏好您可以使用哪种风格?

c typedef objective-c

12
推荐指数
2
解决办法
4517
查看次数

如何将十六进制字符串转换为unsigned char数组?

例如,我有一个cstring "E8 48 D8 FF FF 8B 0D"(包括空格)需要转换为等效的unsigned char数组{0xE8,0x48,0xD8,0xFF,0xFF,0x8B,0x0D}.有效的方法是什么?谢谢!

编辑:我不能使用标准库...所以考虑这个C问题.对不起!

c arrays hex

12
推荐指数
5
解决办法
4万
查看次数