前言
wiringPi 使用
Sourceinsight 使用
https://www.cnblogs.com/lulipro/p/5992172.html
一、wiringPi使用
1. IO口使用
包含头文件,编译时要加wiringPi库
#include<wiringPi.h>
初始化树莓派
int wiringPiSetup (void) //成功返回0 ,失败返回-1 用此函数初始化时使用的是wPi引脚表
int wiringPiSetupGpio (void) //成功返回0 ,失败返回-1 用此函数初始化时使用的是BCM引脚表
配置引脚的IO模式
void pinMode (int pin, int mode) //pin配置的引脚
//mode指定引脚的模式,可选:INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK
//只有wPi下的1脚支持PWM,wPi下的7脚支持时钟
对配置为输出模式的引脚 输出指定电平信号
void digitalWrite (int pin, int value) //value:引脚输出的电平值。可选:HIGH,LOW
对配置为输出模式的引脚 读取其电平信号
int digitalRead (int pin) //返回引脚上的电平
时间控制函数
void delay (unsigned int howLong) //毫秒
void delayMicroseconds (unsigned int howLong) //微秒
linux下时间函数
#include <sys/time.h>
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
int gettimeofday(struct timeval *tv, struct timezone *tz);
//tv保存当前的时间,从UTC时间1970年1月1日 00:00:00算起,达到微妙级别,tz已废弃,传入NULL即可
2.串口通信
初次使用树莓派串口,需要配置
>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
串口通信
int serialOpen (char *device, int baud) //成功返回文件描述符fd,失败返回-1
//device为串口地址,一般为"/dev/ttyAMA0"
//baud:波特率
void serialPutchar (int fd, unsigned char c) //写入一个字符
void serialPuts (int fd, char *s) //写入字符串
int serialDataAvail (int fd) //缓冲区可读取的字节数
int serialGetchar (int fd) //读取一个字符。返回读取到的字符
//如果串口缓存中没有可用的数据,则会等待10秒,如果10后还没有,
//返回-1,所以读取之前用serialDataAvail判断一下
#include <unistd.h>
*size_t write (int fd,const void * buf,size_t count) //发送量大时用此函数
*size_t read(int fd,void * buf ,size_t count) //接受量大时用此函数
二.Sourceinsight
Sourceinsight 创建项目时在代码处先创建一个文件夹,然后将Sourceinsight的储存文件放到此路径下,路径不要太长,否则会闪退
项目同步,将所有的代码都联系起来: project ->Synchronize Files
按住ctrl,光标变为手指,查看变量函数名出现的地方
选中代码 ctrl + / 寻找代码出现的过的地方
三.64位树莓派
换源
sudo nano /etc/apt/sources.list
文件中内容替换为
deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian bullseye main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian bullseye-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian-security/ bullseye-security main non-free contrib
安装wiring库
$ cd ~ 不一定在home下,其他地方也可以
$ git clone https://github.com/WiringPi/WiringPi.git
$ ./build
//即可以以源码的方式安装
总结
1.查看树莓派引脚,终端输入(安装wiringPi库之后)
gpio readall
安装是否成功
gpio -v
2.gcc和cc:
cc是Unix的C编译器,全程为c compiler,而gcc为Linux的,全称为GNU compiler collection,是一个编译器集合,既可以编译c也可以编译c++。
在Linux里面,cc最终会指向gcc,两者是一样的。
gcc和g++:
后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序。
两者都可以编译c和c++代码。gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了。
3.vim自动对齐:命令行模式下:gg(光标移动到首位) = G
4.apt和apt-get区别:
apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合,推荐使用 apt。
5.单双工,半双工,全双工:
单双共:单工数据传输只支持数据在一个方向上传输,不能实现双方的通信
半双工:单工数据传输只支持 数据在一个方向上传输,但在同一时刻,只允许数据在一个方向上传输
全双工:允许数据同时在两个方向上传输
6.串口通信两大因素:数据格式,包括数据位,停止位,奇偶校验位;波特率
7.find查找文件:
> find ~ -name 'demo1.c'
8.宏定义
#define TEST //宏定义后什么都不加,表示定义了一个标识符,用于开启后续的条件编译
#ifdef TEST //条件编译
#endif
//宏的一些特殊用法
#define Conn(x,y) x##y //int a=Conn(12,34); a = 1234
#define ToChar(x) #@x //char b=ToChar(a);b = 'a'
#define ToString(x) #x //char* str = ToString(1234);str = "1234"