原创 Linux系統編程——多線程

線程是獨立調度的基本單位。一個進程可以有一個或者多個線程,線程之間共享進程資源。 線程分類 按調度者分爲: 用戶級線程(User Level Thread,ULT) 解決上下文切換問題,調度算法和過程由用戶決定 存在於用戶

原创 Linux系統編程——POSIX IPC

POSIX IPC POSIX IPC中的xxx_open()中的一些意義相同參數的取值: xxx可以是mq(消息隊列)、sem(信號量)、shm(共享內存) 參數oflag: O_RDONLY - 可讀 O_WRONLY - 可

原创 Linux系統編程——內存映射

內存映射優點 與普通文件多寫相比能加快讀文件/設備的讀寫速度 文件映射 創建文件映射步驟: 1、使用open()獲取文件描述符fd 2、將文件描述符fd作爲fd參數給mmap() 調用mmap()後及時關閉文件描述fd,也不會對

原创 Linux進程優先級和調度

Linux進程調度算法默認模型 循環時間共享調度算法——每個進程輪流使用CPU一段時間, 這段時間成爲時間片or量子,進程無法直接控制何時使用CPU和使用CPU的時間 滿足多任務系統兩個需求: 1、公平性: 每個進程都有機會使用到

原创 數據結構——鏈式棧(C語言)

棧——線性表變異體 棧是一種插入和刪除都在同一端的線性表。這個同一端叫棧頂。棧的插入和刪除都在同一端,所以最後插入的數據肯定會最先會被取出,這種邏輯結構叫先進後出——LIFO(Last in first out)。插入操作叫入棧,

原创 STM32——TIM1的TIM1_CH1N通道PWM初始化

TIM1 是 STM32 的高級定時器,功能很強大,它的每個通道都有對應的互補通道用來互補輸出PWM。之前沒使用過,今天要用來做 PWM 控制,花了好一番功夫才搞定。 記錄下初始化代碼: void Led_PWM_Init(

原创 學習應用筆記—STM32之ADC+DMA多通道模數轉換

在以往學習中,使用ADC採集都是規則單通道軟件啓動採集的那種方式,這種方式也僅限於學習。在真正的項目中會採集很多路ADC,顯示上面方式不合理,這時候就可以使用ADC+DMA進行多路採集,Nice!!! STM32 ADC 簡介

原创 Linux文件操作學習之C標準庫

快速索引廢話說在前面查看相關API如何使用1、fopen函數2、fwrite函數3、fread函數4、fclose函數5、fflush函數6、fseek函數使用相關函數讀寫文件 廢話說在前面 在Linux中,有兩種方式可操作文件,

原创 《linux設備驅動開發詳解》筆記——第5章Linux文件系統與設備文件

Linux文件操作的兩種方式 系統調用操作文件 open、close、write、read 等函數 Linux系統上查看 man手冊 就可以知道這些函數的用法 C庫函數操作文件 fopen、fclose、fwrit

原创 STM32串口之環形隊列接收數據

文章目錄廢話說在前面代碼實現環形隊列數據結構寫一字節數據到隊列判斷隊列是否寫滿讀一字節的數據判斷隊列是否爲空寫多個字節到隊列從隊列中讀出多個字節到STM32上測試 廢話說在前面 碼代碼的應該學數據結構都學過隊列。環形隊列是隊列的一

原创 利用__attribute__((section("name")))構建初始化函數表

在嵌入式學習工作中經常初始化一個硬件就寫一個初始化函數,基本都要到主函數中調用進行初始化,main函數都要改變。當利用__attribute__((section("name")))這個屬性就可以構造一個初始化函數表,這樣每次初始

原创 基於事件的單片機程序設計?

基於事件的單片機程序框架?不知道這個算不算事件驅動,工作中基本是寫的裸機程序多,主要用STM32單片機,這樣搞能方便程序設計,在MDK中測試OK,母雞有沒啥菜雞如本人不自知的問題。 程序從大佬程序參考修改得來。 https://g

原创 shell腳本編程學習筆記(一)

shell腳本編程 shell語法類似C語言,C語言是編譯型語言,shell是解釋型語言。 腳本格式 #!/bin/bash #shell解釋器有很多種,所以要指定shell解釋器 echo "hello worl

原创 C++指針和引用的區別及引用的用法意義

C++指針和引用的區別 C++的指針C語言的概念一樣。 使用引用來替代指針,會使 C++ 程序更容易閱讀和維護 主要不同: 不存在空引用,引用必須鏈接到一塊合法的內存 引用一旦初始化爲一個對象,就不能指向一個對象。指針任何時候

原创 vscode調用keil-MDK編譯程序

vscode的確很強大,很多人爲它貢獻插件,之前看過很多使用Vscode進行STM32開發的文章配置都好麻煩複雜,像我這種怕麻煩的就不想搞,就只能用vscode編輯程序,再切換到keil編譯程序,比較麻煩些。然而這個痛點已經被一