日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【合宙Air105開發(fā)板試用體驗(yàn)】Air105的定時器, 定時器中斷和PWM輸出

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-12-02 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:Michael, 帖子地址:https://bbs.elecfans.com/jishu_2287621_1_1.html

Air105 的timer


定時器

  • 1 個 Timer 單元,包含 8 個獨(dú)立定時器: Timer0,Timer1,Timer2,Timer3,Timer4,Timer5,Timer6,Time7
  • 8 個定時器中斷源獨(dú)立,每個定時器單獨(dú)占 1 個中斷源
  • 使用 PCLK 時鐘頻率作為定時器計時鐘源
  • 定時器采用向下計數(shù)方式


PWM

  • 每個 Timer 單元定時器都支持 PWM 模式
  • PWM 模式最高頻率 PCLK/2
  • PWM 單次觸發(fā)(one shot)功能


定時器相關(guān)代碼

以下代碼基于 air105_projecthttps://gitee.com/iosetting/air105_project的庫函數(shù)

定時器模塊結(jié)構(gòu)

在Air105中, 全局只有一個定時器模塊, TIMM0


  1. typedef struct
  2. {
  3. TIM_TypeDef TIM[TIM_NUM];
  4. __Iuint32_t TIM_IntStatus;
  5. __Iuint32_t TIM_EOI;
  6. __Iuint32_t TIM_RawIntStatus;
  7. __Iuint32_t TIM_Comp;
  8. __IO uint32_t TIM_ReloadCount[TIM_NUM];
  9. } TIM_Module_TypeDef;
復(fù)制代碼


這個 TIMM0 的地址定義在 air105.h 中


  1. #define TIMM0 ((TIM_Module_TypeDef *)TIMM0_BASE)
  2. #define AIR105_PERIPH_BASE (0x40000000UL) /*!< (Peripheral) Base Address */
  3. #define AIR105_APB0_BASE (AIR105_PERIPH_BASE + 0x10000)
  4. #define TIMM0_BASE (AIR105_APB0_BASE + 0x3000)
復(fù)制代碼

地址 = 0x40000000UL + 0x10000 + 0x3000 = 0x4001 3000
范圍 [0x4001_3000, 0x4001_3FFF]

定時器初始化

定時器的初始化只需要兩個參數(shù): TIMx, 周期(時鐘數(shù)), 為配合定時器使用, 還需要定義中斷


  1. void Timer_Init(void)
  2. {
  3. TIM_InitTypeDef TIM_InitStruct;
  4. NVIC_InitTypeDef NVIC_InitStructure;
  5. // 開啟定時器的外設(shè)時鐘
  6. SYSCTRL_APBPeriphClockCmd(SYSCTRL_APBPeriph_TIMM0, ENABLE);
  7. SYSCTRL_APBPeriphResetCmd(SYSCTRL_APBPeriph_TIMM0, ENABLE);
  8. // 定時器的時鐘是 PCLK, 計數(shù)間隔為 1ms 對應(yīng)的時鐘數(shù)
  9. TIM_InitStruct.TIM_Period = SYSCTRL->PCLK_1MS_VAL;
  10. // 使用 定時器0
  11. TIM_InitStruct.TIMx = TIM_0;
  12. // 初始化
  13. TIM_Init(TIMM0, &TIM_InitStruct);
  14. // 開啟定時器0的中斷
  15. TIM_ITConfig(TIMM0, TIM_InitStruct.TIMx, ENABLE);
  16. //NVIC
  17. NVIC_SetPriorityGrouping(NVIC_PriorityGroup_0);
  18. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  19. NVIC_InitStructure.NVIC_IRQChannel = TIM0_0_IRQn;
  20. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  21. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  22. NVIC_Init(&NVIC_InitStructure);
  23. // 啟動定時器0
  24. TIM_Cmd(TIMM0, (TIM_NumTypeDef)TIM_0, ENABLE);
  25. }
復(fù)制代碼



定時器中斷處理

Air105對應(yīng)每個定時器, 各有一個中斷處理函數(shù), 可以查看 startup.air105.s 中的中斷向量定義


  1. TIM0_0_IRQHandler
  2. TIM0_1_IRQHandler
  3. TIM0_2_IRQHandler
  4. TIM0_3_IRQHandler
  5. TIM0_4_IRQHandler
  6. TIM0_5_IRQHandler
  7. TIM0_6_IRQHandler
  8. TIM0_7_IRQHandler
復(fù)制代碼


對應(yīng) Timer0 的中斷處理, 寫在 air105_it.c. TIM_ClearITPendingBit 和 NVIC_ClearPendingIRQ 是必須調(diào)用的, 用于清除中斷


  1. void TIM0_0_IRQHandler(void)
  2. {
  3. TIM_ClearITPendingBit(TIMM0, TIM_0);
  4. NVIC_ClearPendingIRQ(TIM0_0_IRQn);
  5. }
復(fù)制代碼


下面加入處理邏輯的例子, 每秒調(diào)用一次 timer_handler(), 注意不要在中斷處理中使用耗時的工作


  1. extern uint32_t timer_count;
  2. extern void timer_handler(void);
  3. void TIM0_0_IRQHandler(void)
  4. {
  5. timer_count++;
  6. if (timer_count >= 1000)
  7. {
  8. timer_count = 0;
  9. timer_handler();
  10. }
  11. TIM_ClearITPendingBit(TIMM0, TIM_0);
  12. NVIC_ClearPendingIRQ(TIM0_0_IRQn);
  13. }
復(fù)制代碼


定時器示例代碼

使用Timer0控制板載LED每隔一秒閃爍
https://gitee.com/iosetting/air105_project/tree/master/Demos/Timer/Timer_Blink

Air105 的 PWM

Air105 的8個獨(dú)立定時器均可編程產(chǎn)生PWM信號. 當(dāng)用戶設(shè)定TimerNControlReg中PWM比特位為1后,定時器進(jìn)入PWM工作模式. 此時 PWM 由 TimerNLoadCount2 和 TimerNLoadCount 寄存器分別控制高電平及低電平周期翻轉(zhuǎn)輸出.

頻率和占空比設(shè)置

高電平周期 = (TimerNLoadCount2 + 1) * PCLK_Period
低電平周期 = (TimerNLoadCount + 1) * PCLK_Period

PWM 相關(guān)代碼

PWM初始化也只需要三個參數(shù) TIMx 和高低電平兩個周期, 兩者之和就是一個PWM周期


  1. typedef struct
  2. {
  3. TIM_NumTypeDef TIMx;
  4. uint32_t TIM_LowLevelPeriod;
  5. uint32_t TIM_HighLevelPeriod;
  6. }TIM_PWMInitTypeDef;
復(fù)制代碼


用Timer5初始化


  1. void TimerPWM_Init(void)
  2. {
  3. TIM_PWMInitTypeDef TIM_PWMInitStruct;
  4. SYSCTRL_APBPeriphClockCmd(SYSCTRL_APBPeriph_TIMM0, ENABLE);
  5. SYSCTRL_APBPeriphResetCmd(SYSCTRL_APBPeriph_TIMM0, ENABLE);
  6. //Timer5 -> PWM5
  7. TIM_PWMInitStruct.TIM_HighLevelPeriod = SYSCTRL->PCLK_1MS_VAL;
  8. TIM_PWMInitStruct.TIM_HighLevelPeriod = 0;
  9. TIM_PWMInitStruct.TIMx = TIM_5;
  10. TIM_PWMInit(TIMM0, &TIM_PWMInitStruct);
  11. TIM_Cmd(TIMM0, TIM_5, ENABLE);
  12. }
復(fù)制代碼


將 PB5 功能復(fù)用為 PWM5


  1. GPIO_InitTypeDef gpio;
  2. gpio.GPIO_Pin = GPIO_Pin_5;
  3. gpio.GPIO_Mode = GPIO_Mode_Out_PP;
  4. gpio.GPIO_Remap = GPIO_Remap_2;
  5. GPIO_Init(GPIOB, &gpio);
復(fù)制代碼


實(shí)時調(diào)節(jié)占空比, 后兩個參數(shù)代表PCLK時鐘周期個數(shù)


  1. TIM_SetPWMPeriod(TIMM0, TIM_5, period - high_period, high_period);
復(fù)制代碼


PWM示例代碼

使用PWM5(Timer5)控制LED產(chǎn)生呼吸燈效果
https://gitee.com/iosetting/air105_project/tree/master/Demos/PWM/PWM_FadeLED

示例接線:

根據(jù)開發(fā)板的BOMPCB查看https://wiki.luatos.com/_static/bom/Air105.html
Timer5對應(yīng)的PWM5輸出, 對應(yīng)開發(fā)板的SP2_MI, 開發(fā)板上的PWM5對應(yīng)的是PC7, 要注意, 別接錯了.
運(yùn)行示例, 將一個LED串接一個1-5K的電阻, 接在SP2_MI和GND之間, 就能看到呼吸燈的效果了。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 合宙通信
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    2537
  • Air105
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    449
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南之AGT低功耗定時器簡介和結(jié)構(gòu)框圖

    瑞薩RA MCU有兩種定時器外設(shè):GPT(General PWM Timer)定時器和AGT(Asynchronous General Purpose Timer)定時器
    的頭像 發(fā)表于 04-30 16:47 ?3957次閱讀
    瑞薩RA系列FSP庫<b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn)指南之AGT低功耗<b class='flag-5'>定時器</b>簡介和結(jié)構(gòu)框圖

    CW32定時器及其中斷介紹

    )或者產(chǎn)生輸出波形(輸出比較和 PWM)。 高級定時器:高級定時器 (ATIM) 由一個 16 位的自動重載計數(shù)
    發(fā)表于 01-14 06:42

    LAT1173高精度定時器的同步功能應(yīng)用筆記

    STM32G474 所含的高精度定時器(HRTIMER)其實(shí)包含了多個定時器,多個定時器之間可以單獨(dú)工作,也可以進(jìn)行同步,且高精度定時器還能與片上的其他
    發(fā)表于 01-11 17:32 ?0次下載

    CW32通用定時器輸出比較

    PWM,用這種方式輸出的方波也叫做PWM波。 現(xiàn)在來看使用PWM功能需要進(jìn)行哪些操作。先思考,除去基本的定時器配置之外,
    發(fā)表于 12-11 06:45

    【乾芯QXS320F開發(fā)板試用定時器中斷

    CPUTimer_enableInterrupt(CPUTIMER0_BASE);// 設(shè)置定時器中斷 CPUTimer_startTimer(CPUTIMER0_BASE); // 開啟定時器
    發(fā)表于 12-09 16:56

    CW32L010+定時器介紹

    :一組,專為低功耗應(yīng)用而設(shè)計,能夠在保持低功耗的同時實(shí)現(xiàn)定時功能。 高級控制PWM定時器:一組,支持PWM輸出和高級控制功能,適用于需要精確
    發(fā)表于 12-01 07:53

    CW32L0開發(fā)板學(xué)習(xí)記錄四,高級定時器ATIM學(xué)習(xí)

    通道,可以測量輸入信號的脈沖寬度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和 PWM)。 低功耗定時器(LPTIM): 內(nèi)部集成1個 16 位低功耗定時
    發(fā)表于 12-01 07:35

    CW32定時器中斷介紹

    )或者產(chǎn)生輸出波形(輸出比較和 PWM)。 高級定時器:高級定時器 (ATIM) 由一個 16 位的自動重載計數(shù)
    發(fā)表于 12-01 07:08

    單片機(jī)定時器中斷

    定時器/計數(shù)的工作方式寄存,確定工作方式和功能;TCON是控制寄存,控制T0,T1的啟動和停止以及設(shè)置溢出標(biāo)志。 加一計數(shù)的輸入
    發(fā)表于 11-24 06:22

    PWM定時器、SysTick 區(qū)別及應(yīng)用場景

    在單片機(jī)和嵌入式開發(fā)中,經(jīng)常會遇到PWM(脈寬調(diào)制)、定時器、SysTick(系統(tǒng)滴答定時器)這幾個詞。很多初學(xué)者容易把它們混為一談,以為都是“定時
    的頭像 發(fā)表于 11-17 10:53 ?720次閱讀
    <b class='flag-5'>PWM</b>、<b class='flag-5'>定時器</b>、SysTick 區(qū)別及應(yīng)用場景

    SysTick系統(tǒng)滴答定時器簡介

    SysTick—系統(tǒng)定時器是屬于CM33內(nèi)核中的一個外設(shè),內(nèi)嵌在NVIC中。系統(tǒng)定時器是一個24bit的向下遞減的計數(shù),計數(shù)每計數(shù)一次的時間為 1/SYSCLK,一般我們設(shè)置系統(tǒng)時
    的頭像 發(fā)表于 09-23 09:50 ?1848次閱讀
    SysTick系統(tǒng)滴答<b class='flag-5'>定時器</b>簡介

    大彩講堂:VisualHMI-LUA教程-定時器的使用指南

    定時器的使用
    的頭像 發(fā)表于 08-31 16:59 ?1398次閱讀
    大彩講堂:VisualHMI-LUA教程-<b class='flag-5'>定時器</b>的使用指南

    【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】定時器操作

    與GPIO有掛鉤使得它可以發(fā)揮強(qiáng)大的作用,比如可以輸出不同頻率、不同占空比的方波信號、PWM信號,同時做為輸入捕獲功能時,可以測量脈沖寬度、實(shí)現(xiàn)電容按鍵檢測等等。 CH585有4 個 26 位定時器
    發(fā)表于 07-05 23:06

    第十二章 SysTick——系統(tǒng)定時器

    本章介紹了W55MH32的SysTick系統(tǒng)定時器,它是24位遞減計數(shù),含4個寄存,可配置定時、中斷,用于產(chǎn)生時基 等。
    的頭像 發(fā)表于 05-22 17:16 ?1268次閱讀
    第十二章 SysTick——系統(tǒng)<b class='flag-5'>定時器</b>

    揭秘Air780EPM開發(fā)陷阱:20個避坑指南與最佳解決方案

    :www.air780epm.cn 問題01: Air780EPM在PSM+模式下,dtimer定時器可以開幾個? ? 答案: 同一時間只能有64個定時器的任務(wù);如果要支持超過64個
    的頭像 發(fā)表于 05-21 16:04 ?951次閱讀
    揭秘<b class='flag-5'>Air</b>780EPM<b class='flag-5'>開發(fā)</b>陷阱:20個避坑指南與最佳解決方案
    泸西县| 砚山县| 若羌县| 宁晋县| 通化市| 西盟| 乐业县| 西畴县| 克山县| 玉林市| 通渭县| 琼海市| 抚州市| 左贡县| 河西区| 白城市| 南投县| 巴彦县| 武胜县| 大渡口区| 石狮市| 蒙阴县| 惠东县| 浙江省| 满城县| 肥城市| 鄂州市| 吉安县| 修文县| 大荔县| 乐清市| 武安市| 洛川县| 乐山市| 利辛县| 鄱阳县| 台江县| 龙胜| 安岳县| 安塞县| 体育|