小编sho*_*hit的帖子

为什么函数按照定义的顺序执行,而不是按照 avr-c 中 int main() 调用的顺序执行?

我正在尝试学习 AVR C,并且正在修补 atmega328p 微控制器。我正在 Linux Mint 上使用 avr-gcc 工具链来编译我的代码并将其烧写到 Arduino 板上。

所以我尝试使用函数调用使两个 LED 灯闪烁。我制作了两个函数 - 一个用于连接到 Arduino 板的引脚 7 的闪烁 LED,另一个用于连接到 Arduino 板的引脚 13 的闪烁 LED。

这些功能正在运行,但是当我修改代码时,我注意到一个奇怪的行为。这些函数按照它们定义的顺序在 main() 之外被调用和执行;而不是按照它们从 内部调用的顺序int main()

这是我的代码

#include <avr/io.h>
#include <util/delay.h>

void blinkPin13() {
    while(1) {
        DDRB = DDRB | (1 << DDB5);
        PORTB = PORTB | (1 << PORTB5);
        _delay_ms(5000);
        PORTB = PORTB & ~(1 << PORTB5);
        _delay_ms(500);
    }
}

void blinkPin7() {
    while(1) {
        DDRD = DDRD | (1 << …
Run Code Online (Sandbox Code Playgroud)

c avr atmega avr-gcc

2
推荐指数
1
解决办法
195
查看次数

为什么我需要在每次关机/休眠后再次执行 sudo chmod a+rw /dev/ttyACM0 命令?

要将草图上传到 arduino 需要执行以下命令:

sudo chmod a+rw /dev/ttyACM0

我认为这是因为要识别端口并将其列出在系统中。但是我需要在每次关闭或休眠电脑后执行它。但是为什么呢?我怎样才能避免这种情况。我只想写一次命令,而不是每次关机后都写一次。

linux port linux-mint

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

为什么我得到"getuid未在该范围内声明"错误?

#include <string>
#include <stdio.h>
#include <pwd.h>

std::string impPath()
{
    char *name;
    struct passwd *pass;
    pass = getpwuid(getuid());
    name = pass->pw_name;

    std::string PATH = "/home";
    PATH.append("/");
    PATH.append(name);

    return PATH;
}
Run Code Online (Sandbox Code Playgroud)

我需要知道用户的用户.为此.我正在使用,getpwuid()但我收到此错误.

/home/shobhit/Desktop/file.cpp:15: error: 'getuid' was not declared in this scope
 pass = getpwuid(getuid());
                        ^
Run Code Online (Sandbox Code Playgroud)

我只是想不出在这个范围内没有声明getuid的原因是什么.我想我已经包含了所有必要的头文件.(yami对R的回答getlogin()的评论c函数返回NULL和错误"没有这样的文件或目录" 我试过在网上搜索但找不到任何相关的答案.

c++ getpwuid

0
推荐指数
1
解决办法
850
查看次数

标签 统计

atmega ×1

avr ×1

avr-gcc ×1

c ×1

c++ ×1

getpwuid ×1

linux ×1

linux-mint ×1

port ×1