RT-Thread+STM32L475VET6實現定時器定時功能


文章目錄

  • 前言
  • 一、板載資源介紹
  • 二、具體步驟
    • 1.打開STM32CubeMX進行相關配置
      • 1.1 使用外部高速時鐘,并修改時鐘樹
      • 1.2 打開定時器(定時器根據自己需求調整)
      • 1.3 打開串口
      • 1.4 生成工程
    • 2. 配置定時器
      • 2.1 打開HWTIMER設備驅動
      • 2.2 聲明定時器
      • 2.3將stm32l4xx_hal_msp.c中HAL_TIM_Base_MspDeInit函數剪切粘貼至board.c中
      • 2.4 進入stm32l4xx_hal_conf_bak.h
    • 3. 主函數
    • 4. 編譯,燒錄


前言

本文采用開發板為STM32L475VET6(潘多拉開發板),使用RT_Thread Studio基于芯片開發模式,完成定時器實驗


一、板載資源介紹

示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。

二、具體步驟

1.打開STM32CubeMX進行相關配置

1.1 使用外部高速時鐘,并修改時鐘樹

在這里插入圖片描述
在這里插入圖片描述

1.2 打開定時器(定時器根據自己需求調整)

在這里插入圖片描述

1.3 打開串口

在這里插入圖片描述

1.4 生成工程

在這里插入圖片描述

2. 配置定時器

官方給出步驟
在這里插入圖片描述

2.1 打開HWTIMER設備驅動

在RT-Thread Setting的組件欄中
在這里插入圖片描述

2.2 聲明定時器

在這里插入圖片描述

2.3將stm32l4xx_hal_msp.c中HAL_TIM_Base_MspDeInit函數剪切粘貼至board.c中

在這里插入圖片描述

2.4 進入stm32l4xx_hal_conf_bak.h

一般默認開啟
在這里插入圖片描述

3. 主函數

/** 程序清單:這是一個 hwtimer 設備使用例程* 例程導出了 hwtimer_sample 命令到控制終端* 命令調用格式:hwtimer_sample* 程序功能:硬件定時器超時回調函數周期性的打印當前tick值,2次tick值之差換算為時間等同于定時時間值。
*/#include <rtthread.h>
#include <rtdevice.h>#define HWTIMER_DEV_NAME   "timer3"     /* 定時器名稱 *//* 定時器超時回調函數 */
static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size)
{rt_kprintf("this is hwtimer timeout callback fucntion!\n");rt_kprintf("tick is :%d !\n", rt_tick_get());return 0;
}static int hwtimer_sample(int argc, char *argv[])
{rt_err_t ret = RT_EOK;rt_hwtimerval_t timeout_s;      /* 定時器超時值 */rt_device_t hw_dev = RT_NULL;   /* 定時器設備句柄 */rt_hwtimer_mode_t mode;         /* 定時器模式 */rt_uint32_t freq = 10000;               /* 計數頻率 *//* 查找定時器設備 */hw_dev = rt_device_find(HWTIMER_DEV_NAME);if (hw_dev == RT_NULL){rt_kprintf("hwtimer sample run failed! can't find %s device!\n", HWTIMER_DEV_NAME);return RT_ERROR;}/* 以讀寫方式打開設備 */ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR);if (ret != RT_EOK){rt_kprintf("open %s device failed!\n", HWTIMER_DEV_NAME);return ret;}/* 設置超時回調函數 */rt_device_set_rx_indicate(hw_dev, timeout_cb);/* 設置計數頻率(若未設置該項,默認為1Mhz 或 支持的最小計數頻率) */rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq);/* 設置模式為周期性定時器(若未設置,默認是HWTIMER_MODE_ONESHOT)*/mode = HWTIMER_MODE_PERIOD;ret = rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode);if (ret != RT_EOK){rt_kprintf("set mode failed! ret is :%d\n", ret);return ret;}/* 設置定時器超時值為5s并啟動定時器 */timeout_s.sec = 5;      /* 秒 */timeout_s.usec = 0;     /* 微秒 */if (rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s)){rt_kprintf("set timeout value failed\n");return RT_ERROR;}/* 延時3500ms */rt_thread_mdelay(500);/* 讀取定時器當前值 */rt_device_read(hw_dev, 0, &timeout_s, sizeof(timeout_s));rt_kprintf("Read: Sec = %d, Usec = %d\n", timeout_s.sec, timeout_s.usec);return ret;
}
/* 導出到 msh 命令列表中 */
MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample);int main(void)
{rt_kprintf("hello\r\n");
}

4. 編譯,燒錄


在這里插入圖片描述

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

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

相關文章

Linux /etc/fstab文件詳解:自動掛載配置指南(中英雙語)

Linux /etc/fstab 文件詳解&#xff1a;自動掛載配置指南 在 Linux 系統中&#xff0c;/etc/fstab&#xff08;File System Table&#xff09;是一個至關重要的配置文件&#xff0c;它用于定義系統開機時自動掛載的文件系統。如果你想讓磁盤分區、遠程存儲&#xff08;如 NFS&…

鏈表-基礎訓練(二)鏈表 day14

兩兩交換鏈表中的節點 題目示意&#xff1a; 給定一個鏈表&#xff0c;兩兩交換其中相鄰的節點&#xff0c;并返回交換后的鏈表。 你不能只是單純的改變節點內部的值&#xff0c;而是需要實際的進行節點交換。 原先我的思路是圖像上的思路&#xff0c;但是我感覺還是很復雜…

Unity游戲制作中的C#基礎(4)數組聲明和使用

一、數組的聲明 在 C# 中&#xff0c;聲明數組有多種方式&#xff0c;每種方式都有其適用的場景&#xff0c;下面為你逐一詳細介紹&#xff1a; 1. 直接初始化聲明 這種方式直觀且便捷&#xff0c;在聲明數組的同時就為其賦初值&#xff0c;讓數組從誕生之初就擁有了具體的數據…

【Gin-Web】Bluebell社區項目梳理5:投票功能分析與實現

本文目錄 一、投票功能投票流程實現代碼redis投票 一、投票功能 投票流程 首先我們要明確&#xff0c;就是 誰&#xff08;哪個用戶&#xff1a;userID&#xff09; 給 哪個帖子&#xff08;postID&#xff09; 投了 什么票&#xff08;贊成票or反對票&#xff09;。 贊成票…

XUnity.AutoTranslator-deepseek——調用騰訊的DeepSeek V3 API,實現Unity游戲中日文文本的自動翻譯

XUnity.AutoTranslator-deepseek 本項目通過調用騰訊的DeepSeek V3 API&#xff0c;實現Unity游戲中日文文本的自動翻譯。 準備工作 1. 獲取API密鑰 訪問騰訊云API控制臺申請DeepSeek的API密鑰&#xff08;限時免費&#xff09;。也可以使用其他平臺提供的DeepSeek API。 …

Python爬蟲-批量爬取股票數據貓各股票代碼

前言 本文是該專欄的第47篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文筆者以股票數據貓為例子,基于Python爬蟲,批量獲取各股票代碼數據。 具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。廢話不多說,下面跟著筆者直接往下看正文詳細內容。(附…

《Keras 3 :使用 Vision Transformers 進行物體檢測》:此文為AI自動翻譯

《Keras 3 :使用 Vision Transformers 進行物體檢測》 作者:Karan V. Dave 創建日期:2022 年 3 月 27 日最后修改時間:2023 年 11 月 20 日描述:使用 Vision Transformer 進行對象檢測的簡單 Keras 實現。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 介紹 A…

vue-treeselect顯示unknown的問題及解決

問題 解決辦法 去node-modules包里面找到這個組件的源碼&#xff0c;在它dist文件里面找到這個文件&#xff0c;然后搜索unknown&#xff0c;把它刪掉就可以解決了。

深入剖析抽象工廠模式:設計模式中的架構利器

深入剖析抽象工廠模式&#xff1a;設計模式中的架構利器 在軟件開發領域&#xff0c;設計模式是解決常見問題的通用方案&#xff0c;而抽象工廠模式作為創建型設計模式的重要一員&#xff0c;在構建復雜軟件系統時發揮著關鍵作用。它為創建一系列相關或相互依賴的對象提供了一…

python獲取網頁內容 靠譜的做法

獲取網頁內容 response requests.get(url, verifyFalse) 通過這種方式下載網址不太靠譜, 容易出 ssl錯誤 requests.exceptions.SSLError: HTTPSConnectionPool(hostagri.hainan.gov.cn, port443): Max retries exceeded with url: /hnsnyt/xxgk/gfxwj/index_1.html (Caused by…

MFC中CString的Format、與XML中的XML_SETTEXT格式化注意

1、在MFC中導入 "msxml6.dll"&#xff0c;并使用其中的XML_SETTEXT函數&#xff0c;此調用在進行格式化的時候&#xff0c;調用的還是CString.Format()函數&#xff01; 2、用double類型的數據&#xff0c;格式化整形數%d之前&#xff0c;必須將double強轉為int&…

Linux-C-函數棧-SP寄存器

sp&#xff08;Stack Pointer&#xff0c;棧指針&#xff09;是計算機體系結構中一個非常重要的寄存器&#xff0c;下面將詳細介紹其作用和原理。 作用 1. 管理棧內存 棧是一種后進先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;的數據結構&#xff0c;在程…

從零開始用react + tailwindcs + express + mongodb實現一個聊天程序(一)

項目包含5個模塊 1.首頁 (聊天主頁) 2.注冊 3.登錄 4.個人資料 5.設置主題 一、配置開發環境 建立項目文件夾 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 創建前端項目時我們選擇javascrip…

深入理解 QObject的作用

QObject 作為 Qt 庫中所有對象的基類&#xff0c;其地位無可替代。幾乎 Qt 框架內的每一個類&#xff0c;無論是負責構建用戶界面的 QWidget&#xff0c;還是專注于數據處理與呈現的 QAbstractItemModel&#xff0c;均直接或間接繼承自 QObject。這種繼承體系賦予 Qt 類庫高度的…

22爬蟲:使用Drission Page的兩個案例

案例一&#xff1a;使用DrissionPage抓取BOSS上的招聘信息 使用requests獲取BOSS網站上的內容是非常困難的&#xff0c;但是通過網頁自動化工具DrissionPage或者是Playwright或者是Seleenium是非常容易的&#xff0c;接下來我們就給出使用DrissionPage爬取BOSS網站python招聘的…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_atoi 函數

ngx_atoi 聲明在 src/core/ngx_string.h ngx_int_t ngx_atoi(u_char *line, size_t n); 定義在 src/core/ngx_string.c ngx_int_t ngx_atoi(u_char *line, size_t n) {ngx_int_t value, cutoff, cutlim;if (n 0) {return NGX_ERROR;}cutoff NGX_MAX_INT_T_VALUE / 10;cutlim…

具有整合各亞專科醫學領域知識能力的AI智能體開發綱要(2025版)

整合各亞專科醫學領域知識能力的AI代理的開發與研究 一、引言 1.1 研究背景 在科技飛速發展的當下,人工智能(AI)已成為推動各行業變革的關鍵力量,醫療領域也不例外。近年來,AI 在醫療行業的應用取得了顯著進展,從醫學影像診斷到疾病預測,從藥物研發到個性化醫療,AI 技…

如何設計app測試用例

功能測試 測試方法&#xff1a;等價類劃分法、邊界值法、場景法、因果圖法。優先級設定&#xff1a;核心業務功能設為高優先級。需求覆蓋 正向場景、反向場景、關聯接口串場景 與后端開發確認測試用例是否全面覆蓋后端邏輯。和產品確認用例是否覆蓋本次需求&#xff0c;以及是否…

YOLO11 【四】 【DNF制作自己的數據集,切割視頻以及labelimg 閃退問題】

一、問題labelimg 閃退 一點w打標 labelimg就閃退 **原因 &#xff1a; python 版本太高 ** 解決辦法&#xff1a;單獨創建一個虛擬環境用于打標 conda create -n labelimg python3.9 二、使用python腳本切割視頻 # -*- coding: utf-8 -*- import cv2 import osdef video_…

[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction

論文網址&#xff1a;[2401.10134] Spatial-Temporal Large Language Model for Traffic Prediction 論文代碼&#xff1a;GitHub - ChenxiLiu-HNU/ST-LLM: Official implementation of the paper "Spatial-Temporal Large Language Model for Traffic Prediction" …