stm32week17+18+19+20

stm32學習

十二.串口

5.USART的HAL庫用法

USART/UART異步通信配置步驟:

  1. 配置串口工作參數:HAL_UART_Init();
  2. 串口底層初始化:HAL_UART_MspInit();
  3. 開啟串口異步接收中斷:HAL_UART_Receive_IT();
  4. 設置優先級,使能中斷:HAL_NVIC_SetPriority();、HAL_NVIC_EnableIRQ();
  5. 編寫中斷服務函數:USARTx_IRQHandler();、UARTx_IRQHandler();
  6. 串口數據發送:USART_DR、HAL_UART_Transmit();

十三.看門狗

1.IWDG

Independent watchdog,獨立看門狗
本質:產生系統復位信號的計數器
喂狗:在計數器數到0之前,將計數器復位

2.WWDG

Window watchdog,窗口看門狗
與IWDG的區別:需在窗口內喂狗(早于下限或晚于上限均復位),可檢測超時和異常提前喂狗,配置復雜

應用場景:
IWDG:適用于主時鐘可能故障、對可靠性要求極高的場景(如安全系統),獨立工作,對時間精度要求低
WWDG:適用于需精確控制復位時間的場景(如實時任務監控),通過窗口嚴格監控,確保任務在規定時段內運行

十四.TIMER

1.概述

軟件定時原理:用純軟件(CPU死等)的方式實現定時功能,不精準,且拖累CPU
硬件定時:用精準的時基,實現定時功能

STM32定時器分類:

圖片消失了

整體的區別:

圖片消失了

2.配置步驟

  1. 配置定時器基礎工作參數:HAL_TIM_Base_Init()
  2. 定時器基礎MSP初始化:HAL_TIM_Base_MspInit(),配置NVIC、CLOCK
  3. 使能更新中斷并啟動計數器:HAL_TIM_Base_Start_IT()
  4. 設置優先級,使能中斷:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  5. 編寫中斷服務函數:TIMx_IRQHandler
  6. 編寫定時器更新中斷回調函數:HAL_TIM_PeriodElapsedCallback()

3.PWM

通用定時器PWM輸出實驗配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_PWM_Init()
  2. 定時器PWM輸出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置PWM模式/比較值等:HAL_TIM_PWM_ConfigChannel()
  4. 使能輸出并啟動計數器:HAL_TIM_PWM_Start()
  5. 修改比較值控制占空比(可選):__HAL_TIM_SET_COMPARE()
  6. 使能通道預裝載(可選):__HAL_TIM_ENABLE_OCxPRELOAD()

4.通用定時器輸入捕獲脈寬測量

輸入捕獲脈寬測量是微控制器利用內部定時器的 輸入捕獲功能 來測量外部脈沖信號寬度的技術。這一功能在電機控制、信號檢測、通信協議解析等場景中廣泛應用

配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_IC_Init()
  2. 定時器輸入捕獲MSP初始化:HAL_TIM_IC_MspInit()配置NVIC、CLOCK、GPIO
  3. 配置輸入通道映射、捕獲邊沿:HAL_TIM_IC_ConfigChannel()
  4. 設置優先級,使能中斷:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  5. 使能定時器更新中斷:__HAL_TIM_ENABLE_IT()
  6. 使能捕獲、捕獲中斷及計數器:HAL_TIM_IC_Start_IT()
  7. 編寫中斷服務函數:TIMx_IRQHandler()
  8. 編寫更新中斷和捕獲回調函數:HAL_TIM_PeriodElapsedCallback()、HAL_TIM_IC_CaptureCallback()

5.通用定時器脈沖計數

配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_IC_Init()
  2. 定時器輸入捕獲MSP初始化:HAL_TIM_IC_MspInit()配置NVIC、CLOCK、GPIO
  3. 配置定時器從模式等:HAL_TIM_SlaveConfigSynchro()
  4. 使能輸入捕獲并啟動計數器:HAL_TIM_IC_Start()
  5. 獲取計數器的值:__HAL_TIM_GET_COUNTER()
  6. 設置計數器的值:__HAL_TIM_SET_COUNTER()

6.高級定時器

輸出指定個數PWM配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_PWM_Init()
  2. 定時器PWM輸出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置PWM模式/比較值等:HAL_TIM_PWM_ConfigChannel()
  4. 設置優先級,使能中斷:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  5. 使能定時器更新中斷:__HAL_TIM_ENABLE_IT()
  6. 使能輸出并啟動計數器:HAL_TIM_PWM_Start()
  7. 編寫中斷服務函數:TIMx_IRQHandler()
  8. 編寫更新中斷和捕獲回調函數:HAL_TIM_PeriodElapsedCallback()

輸出比較模式配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_OC_Init()
  2. 定時器PWM輸出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置輸出比較模式:HAL_TIM_OC_ConfigChannel()
  4. 使能通道預裝載:__HAL_TIM_ENABLE_OCxPRELOAD()
  5. 使能輸入捕獲并啟動計數器:HAL_TIM_OC_Start()
  6. 修改捕獲/比較計數器的值:__HAL_TIM_SET_COMPARE()
死區控制、剎車
圖片消失了

元器件有延遲特性,所以通電后會有一段死區時間
死區會導致 穩態精度下降、執行器抖動、能耗增加,所以要有死區控制系統
剎車:讓電機快速停轉,stm32可以通過寄存器輸出剎車信號

配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_PWM_Init()
  2. 定時器PWM輸出MSP初始化:HAL_TIM_PWM_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置輸出比較模式:HAL_TIM_OC_ConfigChannel()
  4. 配置剎車功能、死區時間等:HAL_TIMEx_ConfigBreakDeadTime()
  5. 使能輸出并啟動計數器:HAL_TIM_PWM_Start()
  6. 使能互補輸出、主輸出、計數器:HAL_TIMEx_PWMN_Start()
PWM輸入模式

配置步驟:

  1. 配置定時器基礎工作參數:HAL_TIM_IC_Init()
  2. 定時器PWM輸出MSP初始化:HAL_TIM_IC_MspInit(),配置NVIC、CLOCK、GPIO等
  3. 配置輸出比較模式:HAL_TIM_IC_ConfigChannel()
  4. 配置從模式,觸發源等:HAL_TIM_SlaveConfigSynchro()
  5. 設置優先級,使能中斷:HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()
  6. 使能輸入捕獲并啟動計數器:HAL_TIM_IC_Start()、HAL_TIM_IC_Start_IT()
  7. 編寫中斷服務函數:TIMx_IRQHandler()
  8. 編寫輸入捕獲回調函數:HAL_TIM_IC_CaptureCallback()

十五.某些外設

1.MPU

f1沒有
memory protection unit內存保護單元
功能:

  1. 設置不同的存儲區域的存儲器訪問權限
  2. 設置存儲器(內存和外設屬性):可緩存、可緩沖、可共享

三種內存類型:

  1. Normal memory:CPU以最高效的方式加載和存儲字節
  2. Device memory:加載和存儲要嚴格按照次序進行
  3. Strongly ordered memory:程序完全按照代碼順序執行,CPU會等待當前加載存儲執行完畢
圖片消失了

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

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

相關文章

14.Linux Docker

## Linux系統優化一般情況,我們都會使用Linux來進行MySQL的安裝和部署,Linux系統在使用的時候,也需要進行相關的配置,以提高MySQL的使用性能,這里列舉以下幾點:避免使用Swap交換分區,因為交換時…

智能體平臺的商業前景與競爭格局分析:金融與企業市場的機遇與挑戰

一、金融機構與企業部署第三方智能體平臺,這條路靠譜嗎? 1. 需求背景 金融機構和大中小企業普遍面臨數字化轉型、降本增效、智能服務升級等需求。智能體(Agent/AI Agent)平臺能幫助企業快速構建客服、風控、營銷、數據分析等多種…

數據結構篇-二分圖

定義示例應用 定義 一個圖是二分圖;一個圖具有二著色性;一個圖不包含任何奇數長度的環; 實現 /*** Program 18.6 Two-colorability* ------------------------------------------------------------------------------------------------…

50. Pow(x, n)快速冪算法

實現 pow(x, n) ,即計算 x 的整數 n 次冪函數(即,xn )。此函數應將 x 作為浮點數(意味著它可以是十進制數)和 n 作為整數(可以是正數、負數或零)一起使用。 快速冪(Expo…

打造絲滑的Android應用:LiveData完全教程

為什么你需要LiveData? 在Android開發中,數據的動態更新一直是個讓人頭疼的問題。想象一下:你的界面需要實時顯示用戶的余額變化,或者一個聊天應用的未讀消息數得隨時刷新。過去,我們可能會用Handler、手動監聽器&…

vue3 el-table 根據字段值 改變整行字體顏色

在 Vue 3 中使用 Element Plus 的 el-table 組件時,如果你想根據某一列的字段值來改變整行的字體顏色,你可以通過使用自定義的 row-class-name 屬性或者通過插槽(slot)的方式來達到目的。以下是兩種常見的方法: 方法一…

Linux的全新網絡管理命令行工具——nmcli

一、nmcli簡介 1.1、NetworkManager簡介 1.1.1、NetworkManager介紹 在紅帽系的Linux中,默認的網絡服務是由NetworkManager提供的(其主要是一個可以進行動態網絡配置和控制的守護進程)。 使用NetworkManager的優點 序號使用NetworkManager的優…

C++基礎之智能指針

一、概念 堆內存對象需要手動使用delete銷毀,如果沒有使用delete銷毀就會造成內存泄漏。 所以C在ISO98標準中引入了智能指針的概念,并在ISO11中趨于完善。 使用智能指針可以讓堆內存對象具有棧內存對象的特點,原理是給需要手動回收的內內存對…

python3虛擬機線程切換過程

python實現了自己的多線程,為了保證線程安全,引入了全局解釋器鎖GIL,只有拿到GIL的線程才能執行,所以在python中同一時刻只能有一個線程在運行,python多線程無法發揮多核處理器的威力,《python源碼剖析》中…

PYTHON從入門到實踐5-列表操作

# 【1】列表是可變的,可以修改、追加、刪除 import randomclass Friend(object):def __init__(self, name, age):self.name nameself.age ageif __name__ __main__:friendList []for i in range(0, 9):randomNumber random.randint(0, 100)friend Friend(f&qu…

【linux】network服務啟動網卡流程

目錄 1、介紹2、ifup流程【1】與NetworkManager兼容【2】ifup-eth設置ip【3】ifup-routes設置路由 1、介紹 network服務的核心由/etc/sysconfig/network-scripts/下一堆腳本配置來生效,其中啟動網卡就是通過ifup腳本來實現的,下面就講一下ifup如何恢復i…

如何防止自己的電腦被控制?開啟二次驗證保護教程

遠程操作什么最重要?安全,安全,和安全!答案永遠是安全!那么究竟如何能讓遠程連接安全性更上一層臺階吶?又是哪家遠控安全策略方面最給力吶?這可不是王婆賣瓜,自賣自夸,確…

微信小程序節點相關總結

微信小程序節點事件總結 bindtap、catchtap、bindclick的區別?bindclick 和 bindtap 的區別在于: e.target和e.currentTargete.typee.timeStamp觸摸事件屬性(針對觸摸類事件)坐標信息事件綁定數據冒泡與捕獲相關其他特殊屬性**常見…

XSD是什么,與XML關系

XSD(XML Schema Definition)是用于描述XML文檔結構和內容的一種規范。它定義了XML文檔中元素、屬性、數據類型、數據格式以及它們之間的關系和約束。XSD是W3C(萬維網聯盟)推薦的標準之一,它比早期的DTD(Doc…

Ubuntu服務器中MySQL如何進行主從復制

一、MySQL 主從復制基本原理 MySQL 主從復制是指:一臺數據庫服務器負責寫入操作,并將數據變更以二進制日志形式記錄下來;一臺或多臺從庫通過讀取主庫的二進制日志,實時或半實時地將主庫的寫入操作同步到自身數據庫,實現數據一致性…

Android圖形系統框架解析

前言 Android圖形系統對于開發者來說可能會比較難以理解,因為涉及的東西可能會計較多,比如Android自己的圖形系統。OpenGL,視頻編解碼器,SurfaceFlinger,FrameBuffer等等。下面我們結合官方文檔,介紹一下圖…

AI智能巡檢系統給烘焙店開的「減損藥方」 InfiSight智睿視界

01 食材浪費:甜蜜產業的苦澀成本 后廚操作臺上,剛過最佳賞味期的可頌成批倒入垃圾桶——這是烘焙店最隱秘的痛。現烤現售模式雖保障新鮮度,卻讓原料管理淪為盲區: 銷售數據≠生產指南:總部無法感知門店實時庫存 …

工具 | vscode 發出聲音,如何關閉

設置->搜 accessibility -> Accessibility Support -> 自動 改為 off 設置->搜 volume -> 0 設置->搜 sound -> 輔助功能信號 -> sound的 自動 改為 off 參考: How to turn off (or on) sounds from Visual Studio Code? - Stack Ove…

Hyperf 數據庫事務指南(PHP 框架)

Hyperf 數據庫事務指南&#xff08;PHP 框架&#xff09; 1. ?? 數據庫配置 1.1 配置文件 MySQL 配置位于 config/database.php&#xff0c;通常通過環境變量&#xff08;.env&#xff09;管理敏感信息&#xff1a; <?phpdeclare(strict_types 1); /*** This file i…

動態ds-vnp之normal和shortcut兩種方式配置案例

normal方式配置 hub配置 dhcp enable interface GigabitEthernet0/0/0 ip address 3.3.3.3 255.255.255.0 interface GigabitEthernet0/0/1 ip address 192.168.3.254 255.255.255.0 dhcp select interface interface Tunnel0/0/0 ip address 10.1.1.3 255.255.255.0 tunnel…