最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

樹莓派入坑筆記(1.下)

2021-08-29 16:05 作者:會(huì)整活的劍人  | 我要投稿

這個(gè)視頻的處理方法就是樹莓派入坑筆記(1.中)用的Python代碼

把它播放出來就靠下面的C語言代碼



因?yàn)槲也惶珪?huì)剪輯 VS2019遠(yuǎn)程調(diào)試的同時(shí)電腦上播放原版視頻

(等以后學(xué)了剪輯再整些別的活)

(0到4放到前兩個(gè)專欄里面了)

5:Linux Programming in C

驅(qū)動(dòng)一個(gè)OLED屏其實(shí)沒那么簡(jiǎn)單,無論是樹莓派,STM32還是Arduino都需要幾千行C語言代碼.很幸運(yùn),有人之前寫過樹莓派的驅(qū)動(dòng),我必然沒有必要再去手寫.我們只需要把他的代碼移植過來再加上自己的播放視頻的邏輯(還有其他一些功能,比如說點(diǎn)亮個(gè)LED啥的)即可.

fig. 4 我們一會(huì)要做的事情

需要注意,在初學(xué)C語言的時(shí)候,總是嫖別人代碼不是個(gè)好的習(xí)慣.有一些航C助教會(huì)搞代碼查重,甚至出成了一個(gè)題目.在期末考試的時(shí)候一定有代碼查重的,而且是老師做這個(gè)事情,各位一定好自為之.

1.創(chuàng)建項(xiàng)目

打開Visual Studio 2019 新建CMake項(xiàng)目.先修改配置,他默認(rèn)是x64-Debug,因?yàn)槲覀兪沁h(yuǎn)程開發(fā)樹莓派,需要刪掉原來的配置(不然就變成Windows上的C程序了)

fig.5 修改配置

這個(gè)CMakeSettings.json是Visual Studio 生成的 不要弄丟了.

fig.6 修改配置文件CMakeSettings.json

點(diǎn)加號(hào) 新建兩組配置文件(不帶優(yōu)化的Debug模式,一般調(diào)試時(shí)用;帶優(yōu)化的Release模型,一般處理大規(guī)模問題時(shí)用),修改工具集為linux_arm.

然后新建兩個(gè)文件夾,thirdparty(放別人寫好的代碼)和user(放我們的代碼).在兩個(gè)文件夾里面再分別新建兩個(gè)文件夾inc和src用于區(qū)別存放頭文件(C/C++Header .h)和源文件(C Source .c / C++ Source .cpp).


fig.5 項(xiàng)目的結(jié)構(gòu)

2.配置遠(yuǎn)程環(huán)境

樹莓派上先打開SSH

Visual Studio里面 工具->選項(xiàng)->跨平臺(tái)->連接管理器,如果沒有SSH連接就創(chuàng)建一個(gè),如果有了可以編輯或者設(shè)置默認(rèn)值.主機(jī)名是樹莓派的IP地址(用ifconfig查看),用戶名root,密碼是root創(chuàng)建時(shí)設(shè)的密碼.點(diǎn)擊驗(yàn)證.如果配置都對(duì)了應(yīng)該出現(xiàn)fig.7的界面.

fig.6 連接管理器
fig7.配置好的遠(yuǎn)程環(huán)境

3.移植已知的驅(qū)動(dòng)

有個(gè)顯示器屏幕的手冊(cè)網(wǎng)站

我們用的7針SPI OLED屏的一個(gè)資料庫就在這里.第二個(gè)鏈接是資料壓縮包下載鏈接

進(jìn)入資料壓縮包,選擇第1個(gè)demo文件夾,選擇demo_raspberrypi,選擇bcm2835的4線spi,把里面的文件解壓出來,

文件(.h)放到 項(xiàng)目目錄/thirdparty/inc中

文件(.c)放到 項(xiàng)目目錄/thirdparty/src中

但是注意,壓縮包里面有一個(gè)測(cè)試用的main.c文件(含有main函數(shù)).一個(gè)程序只有一個(gè)main作為入口.我們把它扔了不用,自己寫main函數(shù).

在 項(xiàng)目目錄/user/inc中新建文件,比如說cbj0.h

在?項(xiàng)目目錄/user/src中新建文件,比如說cbj0.c(C語言的源文件擴(kuò)展名一定是.c)

項(xiàng)目結(jié)構(gòu)如圖

fig.8目前的項(xiàng)目結(jié)構(gòu)

這里的cbj0.h是公用頭文件?放置標(biāo)準(zhǔn)庫頭文件和常用的宏函數(shù) 類型別名(typedef)等4

如果后面還有自己寫硬件驅(qū)動(dòng)的需要,

在?項(xiàng)目目錄/user/inc添加頭文件(.h) 放置函數(shù)的定義和相關(guān)的結(jié)構(gòu)聲明.

在?項(xiàng)目目錄/user/src添加源文件(一般是C語言寫的用.c 可能有C++寫的,用.cpp)放置函數(shù)的實(shí)現(xiàn)(注意前面#include公用頭文件)

文件名當(dāng)然可以用cbj0這樣的,但是為了好識(shí)別 建議用驅(qū)動(dòng)的硬件名來命名

4.編輯CMakeLists.txt內(nèi)容(劃重點(diǎn))

如果不知道CMakeLists.txt是啥,看下面專欄



這個(gè)CMakeList文件要實(shí)現(xiàn)管理和控制編譯一整個(gè)目錄的源文件

寫法和掃盲那篇不太一樣

cmake_minimum_required (VERSION 3.8)

project ("RPITestCMake")

set(CMAKE_C_COMPILER "/usr/bin/gcc")#設(shè)置C語言編譯器

set(CMAKE_CXX_COMPILER "/usr/bin/g++")#設(shè)置C語言編譯器

include_directories("user/inc" "thirdparty/inc")#設(shè)置頭文件目錄

aux_source_directory("user/src" USER_SRC)#設(shè)置用戶源文件目錄

aux_source_directory("thirdparty/src" OLED_SRC)#設(shè)置第三方源文件目錄(OLED驅(qū)動(dòng))

add_executable (cbj0 ${USER_SRC} ${OLED_SRC})#編譯所有的源文件

target_link_libraries(cbj0 "libbcm2835.a") #鏈接靜態(tài)庫 否則不過編譯

target_link_libraries(cbj0 "libbcm2835.so")#鏈接動(dòng)態(tài)庫

5.寫代碼辣

編輯cbj0.h內(nèi)容?

用條件編譯語句#ifndef ... #define ...#endif?防止重復(fù)包含文件/宏定義?

編輯cbj0.c內(nèi)容

init函數(shù)是全局的初始化,先初始化bcm2835庫,然后初始化OLED

然后bcm2835_gpio_fsel函數(shù)用于初始化GPIO引腳(類似arduino的pinMode)為輸出模式

main函數(shù)打開之前做好的二進(jìn)制文件,每次讀取一幀的圖像數(shù)據(jù)(1KB)然后用他的在OLED顯示屏上繪圖的函數(shù),過30ms(30000us)后畫下一幀的圖像,直到所有的圖像都畫完,然后三色LED閃一下,其中bcm2835_gpio_write函數(shù)用于設(shè)置引腳GPIO電平,1為高 0為低.return語句結(jié)束前關(guān)閉GPIO控制.

F5運(yùn)行,Visual Studio把文件先copy到樹莓派上然后編譯運(yùn)行,也可以像調(diào)試windows程序那樣調(diào)試.

如果有花屏或顯示不清楚,把spi頻率稍微降低即可

fig.9 spi.c SPI初始化函數(shù) 分頻數(shù)圖中有標(biāo)灰色

把spi分頻數(shù)調(diào)小,設(shè)為8分頻以下(但是不要太低了)

到此 樹莓派4B的第一個(gè)坑基本上算踩完了?referenced內(nèi)容在文中有標(biāo)出

樹莓派入坑筆記(1.下)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
长垣县| 淮阳县| 汨罗市| 炎陵县| 深州市| 阳原县| 永修县| 桂东县| 崇信县| 黔西县| 阜城县| 垦利县| 湄潭县| 邢台县| 垣曲县| 黔东| 枣阳市| 灯塔市| 梅州市| 双辽市| 泽库县| 嘉峪关市| 五台县| 河津市| 金坛市| 八宿县| 满城县| 宁国市| 封开县| 多伦县| 松潘县| 涿州市| 达州市| 佛坪县| 巢湖市| 福海县| 武威市| 义马市| 沁源县| 宜君县| 邛崃市|