Linux树莓派开发——串口配置与编程使用

目录

一、串口的配置

二、串口的编程

1、树莓派的串口如下

2、树莓派发送数据给串口

3、电脑发送数据给树莓派

4、电脑和树莓派相互通信


一、串口的配置

初次使用树莓派串口编程,需要对串口进行配置

第一步:

/* 修改 cmdline.txt文件 */
>cd /boot/
>sudo vim cmdline.txt
删除【】之间的部分
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait


第二步:

/*修改 inittab文件 */ (如果没有就不修改)
>cd /etc/
>sudo vim inittab

注释掉最后一行内容:,在前面加上 # 号
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


sudo reboot 重启

二、串口的编程

具体的API使用方法可参考这里

1、树莓派的串口如下

注:电脑和树莓派之间需要一个USB转TTL的模块,树莓派的RX接模块的TX,反之TX接RX这里还需要连接GND。

2、树莓派发送数据给电脑

#include <wiringSerial.h>
#include <wiringPi.h>
int main()
{
    int fd;
    wiringPiSetup(); //初始化

    fd = serialOpen("/dev/ttyAMA0",9600); //打开串口文件,波特率为9600
    while(1){

          serialPuts(fd,"hello world!\r\n");  //\r\n换行
          delayMicroseconds(1000000);        //延时1s
    }
    return 0;
}

3、电脑发送数据给树莓派

#include <wiringSerial.h>
#include <wiringPi.h>

int main()
{
    int fd;
    int cmd;
    wiringPiSetup();
    fd = serialOpen("/dev/ttyAMA0",9600);
    while(1){

        while(serialDataAvail(fd) != -1){   //返回串口缓存中已经接收的,可读取的字节数
                
            cmd = serialGetchar(fd);       //读取数据
            printf("cmd = %d\r\n",cmd);   
        }
    }
    return 0;
}

 注:用串口助手发送的是数字2,显示50是因为打印的是2的ASCALL码。如果以16进制发送显示的就是2。

4、电脑和树莓派相互通信

#include <stdio.h>
#include <wiringSerial.h>
#include <wiringPi.h>
int main()
{
    int fd;
    int cmd;
    wiringPiSetup();
    fd = serialOpen("/dev/ttyAMA0",9600);
    while(1){
        while(serialDataAvail(fd) != -1){     //电脑端不能以16进制发送数据
            cmd = serialGetchar(fd);
            if(cmd == '2'){
                serialPuts(fd,"hello world\r\n"); //接收到数据后给电脑发送数据
            }else{
                printf("错误\n");
            }
         }
    }
    return 0;
}

版权声明:本文为qq_48458789原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。