本文介绍: 好的,你的STM32设备已经被识别为一个USB ACM(Abstract Control Model)设备,对应的串口设备文件是。等终端工具,或者通过编程语言(如C语言)来与STM32进行通信。这是一种常见的在Linux系统上与STM32通信的方式。这个设备文件进行串口通信。以下是一个简单的C语言代码示例,用于打开。保证STM32 USB串口虚拟成功。
保证STM32 USB串口虚拟成功。
lsusb
如果STM32单片机通过USB连接到计算机,你应该能够在输出中看到类似以下的行:
dmesg | grep tty
增加了下面类似信息:
好的,你的STM32设备已经被识别为一个USB ACM(Abstract Control Model)设备,对应的串口设备文件是 ttyACM0
。这是一种常见的在Linux系统上与STM32通信的方式。
现在,你可以使用 ttyACM0
这个设备文件进行串口通信。例如,你可以使用 minicom
或 screen
等终端工具,或者通过编程语言(如C语言)来与STM32进行通信。
以下是一个简单的C语言代码示例,用于打开 ttyACM0
设备文件并进行读写操作:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
int open_serial_port(const char *port) {
int fd = open(port, O_RDWR | O_NOCTTY);
if (fd == -1) {
perror("open_serial_port: Unable to open port");
} else {
fcntl(fd, F_SETFL, 0);
}
return fd;
}
void configure_serial_port(int fd) {
struct termios tty;
memset(&tty, 0, sizeof(tty));
if (tcgetattr(fd, &tty) != 0) {
perror("configure_serial_port: Error from tcgetattr");
return;
}
cfsetospeed(&tty, B9600);
cfsetispeed(&tty, B9600);
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8;
tty.c_cflag &= ~PARENB;
tty.c_cflag &= ~CSTOPB;
tty.c_cflag &= ~CRTSCTS;
tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
tty.c_oflag &= ~OPOST;
tty.c_cc[VMIN] = 1;
tty.c_cc[VTIME] = 5;
if (tcsetattr(fd, TCSANOW, &tty) != 0) {
perror("configure_serial_port: Error from tcsetattr");
}
}
int main() {
const char *port = "/dev/ttyACM0"; // 你的串口设备文件
int serial_fd = open_serial_port(port);
if (serial_fd == -1) {
fprintf(stderr, "Failed to open serial portn");
return 1;
}
configure_serial_port(serial_fd);
char buffer[256];
memset(buffer, 0, sizeof(buffer));
while (1) {
int n = read(serial_fd, buffer, sizeof(buffer) - 1);
if (n > 0) {
buffer[n] = '';
printf("Received: %s", buffer);
} else if (n < 0) {
perror("Error reading from serial port");
break;
}
// 写入串口数据
// write(serial_fd, "Hello, World!n", 13);
usleep(100000); // 100ms延迟
}
close(serial_fd);
return 0;
}
原文地址:https://blog.csdn.net/laocui1/article/details/134788323
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_39204.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。