Rpi的BCM2835库使用——GPIO
Rpi(RaspberryPi,树莓派)是为数不多官方提供Linux系统且自带GPIO、SPI、I2C、PWM等外设接口。对于电子类学科的学生来说,Rpi是挺好入门Linux相关知识和如何驱动外设的了解路径。相比刚开始就去触及bootloder、Linux kernel裁剪、Linux驱动编写,即使对于那些有科班背景的人,可能实际操作这些还是会存在很多问题,以至于开始就劝退不少人吧。通过Rpi至少在还没能操作硬件前,还能尝试些Linux应用先感性的认识下Linux系统呢。兴趣始终是很好的入门导师。
Rpi的使用者,想必都是不仅仅说想了解Linux(假如就这,虚拟机、云服务器都能实现),而是想通过Rpi这台小小的Linux“卡片机”联通现实与现代计算机的世界。
最基础的便是通过GPIO操控开关。有相关了解的想必也知道Rpi的GPIO使用方法有(Rpi的GPIO用户手册Rpi/GPIO)
- 通过文件系统操作(sys/class/gpio)
- 基于Python的RPi.GPIO库
- 基于C的WiringPi: 注意git://git.drogon.net/wiringPi已经关闭,需要的小伙伴可查看WiringPi/New或Gordons Project
- 基于C的BCM2835: 类似stm32的HAL库(芯片外设手册BCM2835 ARM Peripherals)
对于了解51、stm32的人来说,使用BCM2835是比较亲切的。关于BCM2825网络上也有很多相关的教程,但感觉还是忽略了很多细节(比如定义的PIN值是具体指实际的引脚是什么,当时就这个问题困扰了我很久)。于是决定写一篇如何通过官方文档来学习、应用相应的库。而不是二手,甚至三手的信息,弄的人云里雾里的“一次性”教程。
本文章基于Rpi4
BCM2835库——交叉编译
Rpi始终还是相对低性能的Linux“卡片机”,在上面通过Vim编写点小程序还凑合(不会有人真拿显示器、鼠标、键盘用Rpi吧?。。)。但既然都想用Rpi连接现实与现代计算机世界,目标程序可能就会有比较复杂的应用场景,代码量可能会比较的大,再通过Vim编写就可能有点不符合现代IDE环境了。这