原创 Line Disciplines

在Linux tty子系統中,Line Disciplines處在底層驅動與上層應用的之間,先來看一個例子:#include <linux/init

原创 關於dev_set_drvdata()和dev_get_drvdata()

內核版本:Linux-4.5 dev_set_drvdata()和dev_get_drvdata()代碼如下:static inline void

原创 c printf

原文鏈接:http://www.cplusplus.com/reference/cstdio/printf/ function <cstdio> printf int printf ( const char * format

原创 RT-Thread線程

1. 線程創建 線程的創建可以使用rt_thread_create()函數,原型如下:rt_thread_t rt_thread_create(const char *name,

原创 RT-Thread初探

試驗平臺:正點原子探索者STM32F407開發板一、RT-Thread介紹RT-Thread是由國內開發者主導開發的一款開源嵌入式實時操作系統,它包含:操作系統內核、TCP/IP協議棧、文件系統、libc接

原创 第八篇 uCGUI的移植

uCGUI版本:v3.98 屏:OLED 前面顯示字符串我們自己定義了一個字庫,uCGUI中肯定也是有字庫支持的,這裏的移植目標也是調用GUI_DispString()函數後能正確顯示出字符,這裏不會將u

原创 libopencm3庫的使用

libopencm3是開源的cortex-m系列單片機的固件庫,支持stm32、atmel、nxp等等系列單片機。 在Linux下編譯需要交叉編譯器gcc,從這裏下載:https://launchpad.

原创 第九篇 藍牙配對

不管是經典藍牙也好,還是BLE也好,配對方式都有四種,分別是: 1. Numeric Comparison 2. Just Works 3. Out of Band 4. Passkey Entry 而b

原创 第七篇 OLED屏

OLED即Organic Light-Emitting Diode,相比LCD的屏,LCD屏需要背光,而OLED不需要,因爲它本身就是發光的。 開發板上的屏使用的驅動IC是SSD1306,支持並口、I2C

原创 第六篇 蜂鳴器和app_timer

開發板上的蜂鳴器是有源的,所以控制上相對比較簡單,要讓蜂鳴器出聲,只需要把控制gpio口拉高就可了。 什麼時候關閉蜂鳴器呢?有兩種辦法,一是在打開蜂鳴器之後加上一段延時,然後再關閉蜂鳴器。二是使用time

原创 第五篇 按鍵

實際上在藍牙樣板程序中已經包含了按鍵部分的初始化,我們只需要根據自己的板子做很少的配置工作,buttons_init()函數如下:static void buttons_init(void) {

原创 C++引用

一. C++中的引用 引用(reference)實際上是爲對象定義了一個別名,主要用作函數的形參。 引用通過在變量名前加上"&"符號來定義。 例如:int ival = 1024; int &refVal

原创 第四篇 串口通信

在單片機程序開發中除了單步調試外,最有效的調試方法算是打印調試了,所以這裏先把串口功能調試好,也方便以後的調試開發。 nRF51822帶有一個UART接口,但是沒有固定的TX、RX引腳,是可以任意配置到不

原创 mtk平臺充電器檢測

平臺:mt6735 5.1 首先來看BAT_thread()。void BAT_thread(void) { static kal_bool battery_meter_initilized = KAL

原创 Linux driver oops異常的處理

如果Linux驅動裏面出現了oops異常,這種情況如何快速定位到底什麼原因引起的呢,需要對驅動debug。 例如:#include <linux/init.h> #include <linux/modul