【備賽】藍橋杯嵌入式實現led閃爍

原理

由于藍橋杯的板子帶有鎖存器,并且與lcd屏幕有沖突,所以這個就成了考點。

主要就是用定時器來實現,同時也要兼顧lcd的沖突。

一、處理LCD函數

首先來解決與lcd屏幕沖突的問題,把我們所有用到的lcd函數改裝一下。

?以下是基本格式

void LCD函數名(void)
{uint16_t temp = GPIOC->ODR;//其他代碼----//---//---GPIOC->ODR = temp;
}

目的是在每一次調用LCD相關的函數時候,把引腳的狀態恢復為原態。

二、配置定時器

配置一個基本定時+中斷功能即可

通過配置PSC和ARR 把周期設置成0.1s

記得中斷使能

三、代碼

你要實現某條件下,led閃爍,就需要設置一個標志位,等到他條件滿足的時候,在while循環里面就一直不斷地關閉led。

與此同時,開啟定時器,在中斷回調函數里面不斷開啟

由于while循環執行的更塊,所以,每隔0.1s就會進一次中斷,也就是每0.1sLED會亮一次。

這樣就實現了閃爍的效果。

寫一個函數放在while里。 ? ? ? ?
//滿足某條件,就開啟TIM1
//滿足某條件,就關閉TIM1

這樣就可以實現自由控制是否閃爍

int main()
{HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//先關閉鎖存器LCD_Init();LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);//其他代碼//-----------//-----------//其他代碼while(){ //其他代碼------------     
寫一個函數放在while里。        
//滿足某條件,就開啟TIM1
//滿足某條件,就關閉TIM1//這樣就可以實現自由控制是否閃爍if(標志位條件){HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << 2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);}//其他代碼----------}}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << 2, GPIO_PIN_RESET); // 2閃爍HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75759.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75759.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75759.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 并發性能優化實戰:提升多線程應用的效率與穩定性

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;獲得2024年博客之星榮譽證書&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開發技術&#xff0c…

Python----計算機視覺處理(Opencv:道路檢測之車道線擬合)

完整版&#xff1a; Python----計算機視覺處理&#xff08;Opencv:道路檢測完整版&#xff1a;透視變換&#xff0c;提取車道線&#xff0c;車道線擬合&#xff0c;車道線顯示&#xff09; 一、獲取左右車道線的原始位置 導入模塊 import cv2 import numpy as np from matplot…

優選算法的妙思之流:分治——歸并專題

專欄&#xff1a;算法的魔法世界 個人主頁&#xff1a;手握風云 目錄 一、歸并排序 二、例題講解 2.1. 排序數組 2.2. 交易逆序對的總數 2.3. 計算右側小于當前元素的個數 2.4. 翻轉對 一、歸并排序 歸并排序也是采用了分治的思想&#xff0c;將數組劃分為多個長度為1的子…

C語言查漏補缺:基礎篇

1.原理 C語言是一門編譯型計算機語言&#xff0c;要編寫C代碼&#xff0c;C源代碼文本文件本身無法直接執行&#xff0c;必須通過編譯器翻譯和鏈接器的鏈接&#xff0c;生成二進制的可執行文件&#xff0c;然后才能執行。這里的二進制的可執行文件就是我們最終要形成的可執行程…

TPS入門DAY02 服務器篇

1.創建空白插件 2.導入在線子系統以及在線steam子系統庫 MultiplayerSessions.uplugin MultiplayerSessions.Build.cs 3.創建游戲實例以及初始化會話創建流程 創建會話需要的函數&#xff0c;委托&#xff0c;委托綁定的回調&#xff0c;在線子系統接口綁定某一個委托的控制其…

產品經理課程

原型工具 一、土耳其機器人 這個說法來源于 1770 年出現的一個騙局&#xff0c;一個叫沃爾夫岡馮肯佩倫&#xff08;Wolfgang von Kempelen&#xff09;的人為了取悅奧地利女皇瑪麗婭特蕾莎&#xff08;Maria Theresia&#xff09;&#xff0c;“制造”了一個會下國際象棋的機…

nginx中的limit_req 和 limit_conn

在 Nginx 中&#xff0c;limit_req 和 limit_conn 是兩個用于限制客戶端請求的指令&#xff0c;它們分別用于限制請求速率和并發連接數。 limit_req limit_req 用于限制請求速率&#xff0c;防止客戶端發送過多請求影響服務器性能。它通過 limit_req_zone 指令定義一個共享內存…

基于winform的串口調試助手

目錄 一、串口助手界面設計 1.1 串口配置 1.2 接收配置 1.3 發送配置 1.4 接收窗口和發送窗口 1.5 狀態顯示窗口 1.6 串口通訊控件 二、程序編寫 2.1 端口號自動識別并顯示在端口號下拉框 功能說明&#xff1a; 2.2 波特率下拉框顯示 2.3 數據位下拉框顯示 2.4 校…

Docker基礎2

如需轉載&#xff0c;標記出處 本次我們將下載一個 Docker 鏡像&#xff0c;從鏡像中啟動容器 上一章&#xff0c;安裝 Docker 時&#xff0c;獲得兩個主要組件&#xff1a; Docker 客戶端 Docker 守護進程&#xff08;有時稱為“服務器”或“引擎”&#xff09; 守護進程實…

Rocketmq2

一、生產者端防丟失 1. 發送方式選擇 同步發送&#xff1a;使用 send() 方法&#xff0c;等待 Broker 確認響應&#xff08;SendResult&#xff09;&#xff0c;確保消息已成功發送。異步發送&#xff1a;使用 sendAsync() 方法并設置回調函數&#xff0c;處理發送成功 / 失敗…

RabbitMQ詳解,RabbitMQ是什么?架構是怎樣的?

目錄 一,RabbitMQ是什么? 二,RabbitMQ架構 2.1 首先我們來看下RabbitMQ里面的心概念Queue是什么? 2.2 交換器Exchange 2.3 RabbitMQ是什么? 2.4 重點看下優先級隊列是什么? 三,RabbitMQ集群 3.1 普通集群模式 3.2 鏡像隊列集群 一,RabbitMQ是什么? 假設我們程序…

【一步步開發AI運動APP】六、運動計時計數能調用

之前我們為您分享了【一步步開發AI運動小程序】開發系列博文&#xff0c;通過該系列博文&#xff0c;很多開發者開發出了很多精美的AI健身、線上運動賽事、AI學生體測、美體、康復鍛煉等應用場景的AI運動小程序&#xff1b;為了幫助開發者繼續深耕AI運動領域市場&#xff0c;今…

MySQL——DQL的多表查詢

一、交叉連接 標準語法&#xff1a;select * from 表1 cross join 表2 where 表1.公共列 表2.公共列; 簡單語法&#xff1a;select * from 表1 , 表2 where 表1.公共列 表2.公共列; 公共列&#xff1a;兩張表具有相同含義的列&#xff0c;不是列名一樣。 …

【Linux內核】如何更加優雅閱讀Linux內核源碼(vscode)

1. 前言 因為已經習慣在Ubuntu下進行嵌入式工作開發&#xff0c;但Linux源碼在Source Insight下進行閱讀&#xff0c;一直很苦惱Linux/Windows來回切換的開發方式&#xff0c;當前發現可以通過 vscode clangd(擴展組件) 方式進行更好的內核源碼閱讀。 2. 環境 操作系統&…

21.OpenCV獲取圖像輪廓信息

OpenCV獲取圖像輪廓信息 在計算機視覺領域&#xff0c;識別和分析圖像中的對象形狀是一項基本任務。OpenCV 庫提供了一個強大的工具——輪廓檢測&#xff08;Contour Detection&#xff09;&#xff0c;它能夠幫助我們精確地定位對象的邊界。這篇博文將帶你入門 OpenCV 的輪廓…

LETTERS(DFS)

【題目描述】 給出一個rowcolrowcol的大寫字母矩陣&#xff0c;一開始的位置為左上角&#xff0c;你可以向上下左右四個方向移動&#xff0c;并且不能移向曾經經過的字母。問最多可以經過幾個字母。 【輸入】 第一行&#xff0c;輸入字母矩陣行數RR和列數SS&#xff0c;1≤R,S≤…

Day2-2:前端項目uniapp壁紙實戰

再在wallpaper新建一個目錄components 在components下新建組件common-title 記得點擊創建同名目錄 在index加 <view class"select"><common-title></common-title></view> 圖片換了下&#xff0c;原來的有點丑&#xff0c;圖片可按自己喜歡…

其他 vector 操作詳解(四十)

介紹 除去向 vector 添加元素&#xff08;如 push_back&#xff09;之外&#xff0c;vector 還提供了許多其他操作&#xff0c;這些操作大多與 string 的操作類似。通過掌握這些操作&#xff0c;我們可以方便地查詢、修改和比較 vector 中的元素&#xff0c;從而構建靈活、高效…

【Leetcode 每日一題】368. 最大整除子集

問題背景 給你一個由 無重復 正整數組成的集合 n u m s nums nums&#xff0c;請你找出并返回其中最大的整除子集 a n s w e r answer answer&#xff0c;子集中每一元素對 ( a n s w e r [ i ] , a n s w e r [ j ] ) (answer[i], answer[j]) (answer[i],answer[j]) 都應當…

python基礎-13-處理excel電子表格

文章目錄 【README】【13】處理Excel電子表格【13.1】Excel文檔【13.2】安裝openpyxl模塊【13.3】讀取Excel文檔【13.3.1】使用openpyxl模塊打開excel文檔【13.3.2】從工作簿取得工作表【13.3.3】從工作表sheet獲取單元格cell【13.3.5】從表中獲取行和列【13.3.6】工作簿、工作…