【CS32L015C8T6】配置單片機PWM輸出(內附完整代碼及注釋)

目錄

前言:

一、CS32L015中定時器及PWM硬件資源介紹:

二、以CS32L015為例配置PWM步驟:

三、完整代碼及注釋

四、如果這篇文章能幫助到你,請點個贊鼓勵一下吧ξ( ?>??)~


前言:

????????CS32L015 是一款內嵌 32 位 ARM? Cortex?-M0+內核的超低功耗微控制器,最高可運行在 24MHz,內置 64K 字節的嵌入式 Flash,8K 字節的 SRAM,集成了 12 位 1Msps 高精度 SAR 型 ADC、RTC、比較器、運算放大器、多路 UART、SPI、I2C、OWI 和 PWM 等豐富的外設接口,具有高整合度、高抗干擾、高可靠性的特點。

????????當然,CS32L015最大的特點是性價比高,價格優惠使得它成為許多嵌入式產品的優先選擇 。

一、CS32L015中定時器及PWM硬件資源介紹:

????????- 3 個 16 位高級控制定時器 TIM1、7、8,,每個定時器支持 4 路比較輸出/輸入捕獲/PWM 輸出,其中 3 個 通道支持死區可控的互補 PWM 輸出???????? 。

????????- 4 個 16 位通用定時器,每個定時器支持 4 路

比較輸出/輸入捕獲/ PWM 輸出

????????- 1 個 16 位可編程數字陣列(PCA),支持 5 路輸

入捕獲/比較輸出,PWM 輸出

????????- 2 個 16/32 位基礎定時器/計數器

????????- 1 個 16 位低功耗定時器

????????- 1 個自動喚醒定時器(AWT)

????????- 1 個獨立看門狗定時器 (FWDT)

????????- 1 個窗看門狗定時器 (WWDT):

????????- 1 個系統時間定時器: 24 位自減型計數器

二、以CS32L015為例配置PWM步驟:

PWM配置步驟:

  1. 開啟GPIO和TIM的RCC使能
  2. 初始化GPIO(選擇復用功能)
  3. 初始化TIM
  4. 初始化TIMOC
  5. 開啟TIM的PWM輸出

三、完整代碼及注釋

TIM_HandleTypeDef htim7 = {0};	//PWM 輸出TIM7CH1,對應R_PWM
/*****************************************************************************
[函數名稱]MX_TIM7_MspInit
[函數功能]定時器7GPIO初始化
[參    數]
[備    注]
*****************************************************************************/
void MX_TIM7_MspInit()
{GPIO_InitTypeDef GPIOx = {0};		//創建GPIO的結構體__HAL_RCC_GPIOA_CLK_ENABLE();		//開啟GPIOA時鐘, PA3GPIOx.Pin = R_PWM_Pin;					//GPIO端口GPIOx.Mode = GPIO_MODE_AF;			//開啟GPIO復用功能GPIOx.Alternate = GPIO_AF_MODE_3;	//配置GPIO復用功能模式GPIOx.OpenDrain = GPIO_PUSHPULL;	//配置推挽輸出GPIOx.Pull = GPIO_NOPULL;				//無上拉電阻GPIOx.Debounce.Enable = GPIO_DEBOUNCE_DISABLE;	//關閉按鍵抖動GPIOx.DrvStrength = GPIO_DRV_STRENGTH_HIGH;			//強驅動GPIOx.SlewRate = GPIO_SLEW_RATE_HIGH;		//高速度HAL_GPIO_Init( R_PWM_GPIO_Port, &GPIOx );	//GPIO初始化
}/*****************************************************************************
[函數名稱]MX_TIM7_Init
[函數功能]定時器7配置PWM初始化
[參    數]
[備    注]輸出TIM7CH1,對應R_PWM,PA3
*****************************************************************************/
void MX_TIM7_Init()
{MX_TIM7_MspInit();	//定時器7配置GPIO__HAL_RCC_TIM7_CLK_ENABLE();	//開啟TIM定時器的時鐘使能htim7.Instance = TIM7;				//配置TIM7定時器htim7.Channel = TIM_CHANNEL_1;	//配置通道1htim7.Init.Period = 1000 - 1;		//配置ARR寄存器,控制周期頻率htim7.Init.Prescaler = 24;			//預分頻系數htim7.Init.CounterMode = TIM_COUNTERMODE_UP;		//計數模式,向上計數htim7.Init.ClockDivision = 0;		//時鐘不分頻htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;	//自動重裝開啟htim7.Init.RepetitionCounter = 0;	//自動重裝值為0HAL_TIM_PWM_Init(&htim7);	//定時器7初始化TIM_OC_InitTypeDef htimx_OC = {0};	//OC配置htimx_OC.OCMode = TIM_OCMODE_PWM1;	//配置OCMODE的模式htimx_OC.Pulse = 500;		//配置占空比htimx_OC.OCPolarity = TIM_OCPOLARITY_LOW;		//配置高低電平HAL_TIM_PWM_ConfigChannel( &htim7, &htimx_OC, TIM_CHANNEL_1 );	//初始化HAL_TIM_PWM_Start( &htim7, TIM_CHANNEL_1 );
}

四、如果這篇文章能幫助到你,請點個贊鼓勵一下吧ξ( ?>??)~

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

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

相關文章

hive表不顯示列注釋column comment的問題解決

安裝datasophon平臺hive后,發現hive表的字段注釋丟失了,表的注釋沒問題,csv格式的表沒問題,只有parquet和orc的表有這個問題。查網上似乎沒有這方面的問題。查看mysql表里面的中文注釋也一切正常,后來經過多次研究才發…

【筆記】AI Agent發展趨勢

前言 本章主要探討了現在AI技術的發展趨勢、大模型的一些局限性和小模型存在的必要性,然后引出了AI Agent的優勢與發展趨勢。 目標 學完本課程后,您將能夠: 了解大模型的局限性; 了解小模型存在的必要性; 了解AI Agent的優勢; 了解模型協同的技術。 目錄 1.AI發…

ChatDOC工具測評:AI驅動PDF/Word文檔處理,支持敏感內容隱私保護與表格提取分析

之前跟你們聊過用 Python 處理數據的 Pandas,今天換個更貼近日常辦公的方向 —— 給你們安利一個 AI 文檔處理工具「ChatDOC」,官網地址是https://www.chatdoc.com/,它能直接讀取 PDF、Word 里的內容,你不用逐頁翻文檔找信息&…

Vue + fetchEventSource 使用 AbortController 遇到的“只能中止一次”問題解析與解決方案

前言 在前端項目中,使用 SSE(Server-Sent Events) 長連接去獲取實時消息已經很常見了。像 fetchEventSource 這種封裝好的工具,可以幫助我們輕松處理流式請求。 不過在實踐中,我遇到了一個奇怪的問題:點擊按…

Django get_or_create 方法詳解

get_or_create 是 Django ORM 中的一個非常常用的方法,它用于獲取數據庫中的一個對象,如果該對象不存在,則創建一個新的對象并返回。 方法簽名: Model.objects.get_or_create(defaultsNone, **kwargs)參數解釋: defaul…

LangChain 文檔問答系統中高級文本分割技術

告別語義斷裂:LangChain 文檔問答系統中高級文本分割技術深度指南 文章目錄 引言:問題的根源——為何精準的文本分割是 RAG 系統的命脈? 第一部分:探本溯源——剖析 LangChain 默認分割器的“機械之困” 機制解析:語法驅動的“暴力”切分 問題場景化展示:語義、上下文與結…

Web2 vs Web3--差異一看就懂

互聯網技術的浪潮不斷推動著我們從Web2時代向Web3時代邁進。這兩個時代在技術架構、用戶體驗、數據所有權等方面有著顯著的差異。本文將為您詳細解析Web2與Web3之間的差異,并探討它們如何塑造我們的數字生活。 定義 Web2,即第二代互聯網,以其…

深入解析MongoDB內部架構設計

MongoDB內部構造詳解 MongoDB作為一款流行的NoSQL數據庫,其內部構造設計獨特且高效。以下從多個維度詳細解析MongoDB的內部架構和核心組件。 一、整體架構 MongoDB采用分布式架構設計,主要包含以下核心組件:應用層:應用程序通過語…

ubuntu12.04安裝opencalib手動標定并使用自己的數據

ubuntu22.04安裝opencalib手動標定并使用自己的數據 一、OpenCalib的部署使用 1、基本信息 官網鏈接: https://github.com/PJLab-ADG/SensorsCalibration/tree/v0.2 (官網下載的zip文件是有問題的,不建議到官網下載) 參考鏈接: https://blog.csdn.net/qq_49959714/arti…

scss 轉為原子css unocss

文章目錄前言🎯 **方案一:混合模式 (推薦)**🎯 **方案二:語義化組件類**🎯 **方案三:CSS 模塊化**🎯 **方案四:BEM 命名規范**💡 **推薦做法**前言 記錄讓c4 從scss 轉為…

【面試題】生成式排序了解嗎?

生成式排序是搜索排序的前沿方向,核心思想是利用生成式模型的能力來改善排序效果。 技術實現方式:序列到序列重排序 將候選文檔列表作為輸入序列使用encoder-decoder模型生成重排后的文檔序列優勢:能捕捉文檔間的全局相關性生成式特征提取 使…

【系統架構設計(15)】軟件架構設計一:軟件架構概念與基于架構的軟件開發

文章目錄一、核心思想二、軟件架構概念:系統設計的高級抽象三、軟件架構設計與生命周期:架構在開發流程中的演進四、架構描述語言ADL:架構的標準化表達五、41視圖:多角度的架構展現六、基于架構的軟件開發概念:架構驅動…

文件系統-哈希結構文件

一、核心思想哈希文件的核心思想非常簡單直接:通過一個計算(哈希函數),將記錄的鍵(Key)直接轉換為該記錄在磁盤上的物理地址(通常是塊地址),從而實現對記錄的快速存取。它…

一文吃透 C#中異步編程Task

一文吃透 C#中異步編程Task 一、Task 是什么 二、推薦使用場景 三、Demo:Task 的核心用法 1. 最常用的啟動方式Task.Run 2. task完成狀態與結果獲取 3. 多個任務怎么等?Wait/WaitAll/WaitAny 4. 任務想中途停掉?取消與異常處理 四、必備 API 速查表 五、避坑指南、注意事項 …

TDengine TIMETRUNCATE 函數用戶使用手冊

TDengine TIMETRUNCATE 函數用戶使用手冊 函數概述 TIMETRUNCATE 是 TDengine 中的一個時間處理標量函數,用于將時間戳按照指定的時間單位進行截斷操作。該函數在時間數據聚合、分組和統計分析中非常有用,特別適用于智能電表等時序數據的分析場景。 語法…

KSZ8081寄存器介紹

一、寄存器概覽KSZ8081MNX/RNB 支持 IEEE 802.3 標準的 MII 管理接口(MDIO),寄存器地址范圍為 0x00 - 0x1F,其中寄存器 0x00 - 0x08 為 IEEE 標準寄存器,0x09 - 0x1F 為擴展功能寄存器。寄存器按功能可分為基本控制與狀…

力扣190:顛倒二進制位

力扣190:顛倒二進制位題目思路代碼題目 顛倒給定的 32 位無符號整數number的二進制位。 思路 思路很簡單,我們只需要得到number從低位到高位的每一個二進制位再把二進制位移到顛倒的res的對應二進制位即可,例如number的最低位為1那么res的最高位即1&a…

鴻蒙NEXT交互機制解析:從輸入設備到手勢響應的全面指南

深入探索鴻蒙NEXT的交互設計,掌握下一代人機交互核心技術在智能設備無處不在的今天,一個操作系統的交互設計質量直接影響著用戶體驗。鴻蒙NEXT作為華為推出的新一代操作系統,在交互設計上帶來了許多創新和突破。本文將全面解析鴻蒙NEXT的交互…

通過IDEA寫一個服務端和一個客戶端之間的交互

服務端代碼:WebSocketConfig代碼package org.example.hufamessagedemo;import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.*;Configuration EnableWebSocket public class WebSocketConfig i…

玩客云刷機Armbian + CasaOS,輕nas系統,以及擴展

網上太多的教程,綜合了一下,自己一邊參考一邊嘗試,昨天晚上做的,感覺今天快忘了,記錄一下,少走彎路。 隨著礦潮的退去,市場上涌現出了眾多所謂的“礦渣盒子”,這些設備往往因為價格低…