树莓派外设开发

一.树莓派外设开发接口文档参考

  • WiringPi库(Linux动态库:so 静态库:.a)
  • API printf(c标准库)

链接

二.树莓派的接口: 驱动

  1. IO口:input output 对主控来说
  2. Input:人体,烟雾,火焰,震动等
  3. Output:继电器,蜂鸣器
  4. PWM:电机调速,灯光调明亮度
  5. 语音识别模块,液晶屏
  6. 串口uart
  7. IIC
  8. SPI
  9. IIS
  10. 其他特定硬件的接口:flash
  11. 有操作系统:Nanopi:Linux S3c2410,2440 6410 Tiny210 tiny4412 海思方案,瑞芯微方案,移远方案
  12. 没有操作系统(Linux):C51,stm32,arduino,wemosD1

三.树莓派的接口函数

3.1 硬件初始化函数:

  1. int wiringPiSetup (void)

当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表,引脚的编号为 0~16,需要root权限,返回执行状态,-1表示失败;

  1. int wiringPiSetupGpio (void)

当使用这个函数初始化树莓派引脚时,程序中使用的是BCM GPIO 引脚编号表,需要root权限,返回执行状态,-1表示失败。

3.2 通用GPIO控制函数:

  1. .void pinMode (int pin, int mode) ;

这个函数式设置pin脚的输入和输出模式以及PWM的输入和输出模式。在wiringPi中只有 pin 1 (BCM_GPIO 18)是支持PWM的输出的。

  1. void digitalWrite (int pin, int value) ;

这个函数式用来设置pin脚的高低电平的,当我们写HIGH or LOW (1 or 0)的时候pin脚的mode必须为输出模式。

  1. void digitalWriteByte (int value) ;
    这个函数可以将8位字节写给8个GPIO pin脚,这是设置8个pin脚值的最快的方式。
  2. void pwmWrite (int pin, int value) ;
    这个函数是给PWM寄存器写入值然后控制GPIO的值的,写入的值必须是0-1024.
  3. int digitalRead (int pin) ;
    这个函数是读取GPIO的pin脚的电平高低然后返回读取的值。
  4. void pullUpDnControl (int pin, int pud) ;
    这个函数是设置GPIO的pin脚是否接上拉电阻和下拉电阻的。函数的参数pud必须设置,当设置为PUD_OFF时表示没有上拉电阻和下拉电阻,当设置为PUD_DOWN 时为下拉电阻,设置为PUD_UP是为上拉电阻。

3.3PWM的控制:

  1. pwmSetMode (int mode) ;
    这个函数是设置PWM的占空比模式一般为50%占空比和占空比可调模式。树莓派默认是50%占空比模式,我们可以通过PWM_MODE_BAL 和PWM_MODE_MS这两个参数来设置。
  2. pwmSetRange (unsigned int range) ;
    这个函数是设置PWM寄存器写入的范围,一般默认为1024.
  3. pwmSetClock (int divisor) ;
    这个函数的设置PWM时钟的分频因子。

3.4定时函数:

  1. void delay (unsigned int howLong)
    这个是毫秒级的延时函数。
  2. void delayMicroseconds (unsigned int howLong)
    微秒级的延时函数

3.5中断的函数:

  1. int waitForInterrupt (int pin, int timeOut) ;
    这一个等待事件中断函数,timeout参数是毫秒级别的参数,当为-1时代表永远等待中断状态。如果发生错误返回值是-1,0表示超时,1表示成功中断。调用这个函数之前我们需要对GPIO进行初始化。例如我们要设置GPIO 0为等待下降沿中断:我们需要在运行程序之前先终端运行 gpio edge 0 falling
  2. int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;
    这个函数是利用一个函数作为参数来获取在特定的GPIO pin脚的中断。edge_Type参数可以设定为 INT_EDGE_FALLING, INT_EDGE_RISING, INT_EDGE_BOTH or INT_EDGE_SETUP.
    当中断发生的时候function将被调用,调用function之前会先清除相应的标志位,这就使得随后的中断不会被影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

elaot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值