串口为什么自动打印数据

串口为什么自动打印数据,第1张

、去掉printk打印

在linux内核中的/kernel目录下printk.c文件中有一个函数:

static void __call_console_drivers(unsigned long start, unsigned long end)

{

struct console *con

for (con = console_driversconcon = con->next) {

if ((con->flags &CON_ENABLED) &&con->write)

con->write(con, &LOG_BUF(start), end - start)

}

}

去掉如下两行重新编译内核即可:

if ((con->flags &CON_ENABLED) &&con->write)

con->write(con, &LOG_BUF(start), end - start)

2、标准输出、标准错误输出重定向

int main() {

int pid = 0

// fork a worker process

if (pid = fork()) {

// wait for completion of the child process

int status

waitpid(pid, &status, 0)

}

else {

// open /dev/null

int fd_null = open("/dev/null",O_RDWR)

if(dup2(fd_null, 1) == -1)

return 1

if(dup2(fd_null, 2) == -1)

return 1

XX_run()

}

return 0

}

我将标准输出和错误输出重定向到/dev/null中

如果我没有将输出重定向,只是关闭输出,close(1) close(2),程序经常出现错误,这个还需要继续研究。

minicom是Linux下串口通信的软件,它的使用完全依靠键盘的 *** 作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和配置

安装minicom

使用以下命令:

sudo apt-get install minicom

配置minicom:

查看串口信息

在使用minicom之前,首先要保证你对串口有读/写的权限。我们知道,Linux的设备对应于/dev/目录中的某个文件,串口COM1对应ttyS0,COM2对应ttyS1,使用以下命令来查看你对COM1的权限:

ls -l /dev/ttyS0

可以看到,它的属主是root。

配置minicom

正如在Windows中要配置超级终端一样,在使用minicom之前,先要对串口进行配置。

sudo minicom -s

选择Serial port setup,此时所示光标在”Change which setting”上,键入”A”,此时光标移到第A项对应处: 串口COM1对应ttyS0,COM2对应ttyS1

然后对波特率,数据位和停止位进行配置,键入”E”,波特率选为115200 8N1(数据位8,奇偶校验无,停止位1),硬/软件流控制分别键入”F”和”G”,并且都选No。

在确认配置正确之后,可键入回车返回上级配置界面,并 将其保存为默认配置(即save setup as dfl)。最后,选择”Exit from Minicom”命令退出。

然后重启minicom(即直接在shell下执行minicom命令就可以进入minicom的控制台)使刚才的配置生效,再连上开发板的串口线后,就可以在minicom中打印出正确的串口信息了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8603673.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存