我正在尝试学习 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) 要将草图上传到 arduino 需要执行以下命令:
sudo chmod a+rw /dev/ttyACM0。
我认为这是因为要识别端口并将其列出在系统中。但是我需要在每次关闭或休眠电脑后执行它。但是为什么呢?我怎样才能避免这种情况。我只想写一次命令,而不是每次关机后都写一次。
#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和错误"没有这样的文件或目录" 我试过在网上搜索但找不到任何相关的答案.