虽说串口是硬件,但Linux的特性还是让串口以文件形式存储再Linux中。我们可以通过
cd /dev
来查看,一般是
ttyAMA0
.
wringPi库相关文档:
softPwm,软件实现的PWM
树莓派硬件上支持的PWM输出的引脚有限,为了突破这个限制,wiringPi提供了软件实现的PWM输出API。
需要包含头文件:#include <softPwm.h>
编译时需要添pthread库链接 -lpthread
串口通信
使用时需要包含头文件:#include <wiringSerial.h>
必须修改的功能
/* 修改 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 重启
通过串口打印数据
#include <wiringSerial.h>
#include <wiringPi.h>
int main()
{
int fd;//串口也文件
wiringPiSetup();//设备初始化
fd=serialOpen("/dev/ttyAMA0",9600);//串口初始化,
//设置波特率为9600
while(1)
{
serialPuts(fd,"wo hen shuai\r\n");//打印字符串,回车加换行
delayMicroseconds(1000000);//每隔一秒打印字符
}
return 0;
}
发送数据给串口
#include <wiringSerial.h>
#include <wiringPi.h>
#include <stdio.h>
int main()
{
int fd;//串口也文件
int cmd;
wiringPiSetup();//设备初始化
fd=serialOpen("/dev/ttyAMA0",9600);//串口初始化,设置波特率为9600
while(1)
{
while(serialDataAvail(fd)!= -1)//判断串口是否有数据
{
cmd=serialGetchar(fd);
if(cmd == 2)
{
printf("dong rui long hen %d\r\n",cmd);
}
}
}
return 0;
}