在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32CUBEMX開發GD32F303(13)----定時器TIM捕獲PWM測量頻率與占空比

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2022-12-07 10:15 ? 次閱讀

概述

本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 本章STM32CUBEMX配置STM32F103輸出PWM,同時使用TIM測量PWM頻率和正占空比。 最近在弄ST和GD的課程 。

生成例程

這里準備了自己繪制的開發板進行驗證。

在這里插入圖片描述

查看原理圖,PA9和PA10設置為開發板的串口。

在這里插入圖片描述

配置串口

在這里插入圖片描述

查看原理圖,PB0設置為PWM輸出管腳,PB10設置為定時器輸入捕獲管腳。

在這里插入圖片描述

配置時鐘

配置時鐘為64M。

在這里插入圖片描述

配置PWM

配置定時器1輸出pwm的頻率為1K。

在這里插入圖片描述

在這里插入圖片描述

配置輸入捕獲

在這里插入圖片描述

開啟中斷

在這里插入圖片描述

keil配置

microlib 進行了高度優化以使代碼變得很小。 它的功能比缺省 C 庫少,并且根本不具備某些 ISO C 特性。 某些庫函數的運行速度也比較慢,如果要使用printf(),必須開啟。

在這里插入圖片描述

代碼

在main.c中,添加頭文件,若不添加會出現 identifier "FILE" is undefined報錯。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函數聲明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/*
/* USER CODE END PFP */

空比與頻率計算

占空比=(t1-t0)/(t2-t0) 頻率=(t2-t0)/時鐘頻率= =(t2-t0)/(64M/(psc+1))

在這里插入圖片描述

周期需要2個上升沿去判斷,設定第一個上升沿time_flag由0->1,下降沿time_dowm_flag由0->1,此時就知道正占空比時間,當在產生上升沿時候,就可以計算出周期使用的時間。

在這里插入圖片描述

變量定義

#define IR_IN1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_10)
uint8_t time_up_flag=0;//上升沿標志位
uint8_t time_dowm_flag=0;//下降沿標志位

uint32_t time_up_num=0;//上升沿計數
uint32_t time_dowm_num=0;//下降沿計數



float time_frequency;//頻率
float time_duty;//占空比

設置PWM占空比以及開啟輸入捕獲

/* USER CODE BEGIN 2 */
    HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, 300);
    HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_3);//函數用于使能定時器某一通道的輸入捕獲功能,并使能相應的中斷
    HAL_Delay(1);//加個延時,否則會配置錯誤
    __HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_3, TIM_INPUTCHANNELPOLARITY_RISING); // 重新設置位上升沿捕獲
    HAL_Delay(100);
  /* USER CODE END 2 */

回調函數

/* USER CODE BEGIN 4 */
// 捕獲中斷回調函數,每次捕獲到信號就會進入這個回調函數
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
    // 判斷是否是定時器1的外部捕獲口2
    if(htim->Instance == TIM2)
    {
        if(IR_IN1&&time_up_flag==0)//第一次上升
        {
            time_up_flag=1;
            __HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_3, TIM_INPUTCHANNELPOLARITY_FALLING); // 改變捕獲極性為下降沿捕獲
            __HAL_TIM_SET_COUNTER(&htim2, 0); // 計數清零,從頭開始計

        }
        else if(IR_IN1==0&&time_dowm_flag==0)//下降
        {

            time_dowm_num = HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_3); // 讀取捕獲計數,這個時間即為上升沿持續的時間
            __HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_3, TIM_INPUTCHANNELPOLARITY_RISING); // 改變捕獲極性為上升沿沿捕獲
            time_dowm_flag=1;
        }        
        else if(IR_IN1&&time_dowm_flag==1)//第二次之后上升
        {        
            time_up_num = HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_3); // 讀取捕獲計數,這個時間即為上升沿持續的時間
            __HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_3, TIM_INPUTCHANNELPOLARITY_FALLING); // 改變捕獲極性為下降沿捕獲
            time_dowm_flag=0;
            __HAL_TIM_SET_COUNTER(&htim2, 0); // 計數清零,從頭開始計

        }    

    }    
}
/* USER CODE END 4 */

主函數

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
        time_frequency=1000000/time_up_num;//頻率
        time_duty = (float)time_dowm_num/(float)time_up_num;//占空比    
        printf("
time_frequency=%.2f,time_duty=%.2f",time_frequency,time_duty*100);
        time_duty=0;
        time_frequency=0;
        __HAL_TIM_SET_AUTORELOAD(&htim3, 500-1);
        __HAL_TIM_SET_PRESCALER(&htim3, 32-1);
        HAL_Delay(1000);        
  }
  /* USER CODE END 3 */

測試結果

當輸出1k頻率,30%正占空比。

在這里插入圖片描述

在這里插入圖片描述

當輸出4k頻率,60%正占空比。

在這里插入圖片描述

在這里插入圖片描述

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    116

    文章

    5384

    瀏覽量

    218137
  • STM32
    +關注

    關注

    2290

    文章

    11017

    瀏覽量

    362456
  • 開發板
    +關注

    關注

    25

    文章

    5532

    瀏覽量

    102426
  • Tim
    Tim
    +關注

    關注

    0

    文章

    84

    瀏覽量

    18242
  • stm32cubemx
    +關注

    關注

    5

    文章

    286

    瀏覽量

    15982
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32CUBEMX開發GD32F303(6)----GPIO輸入函數說明

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過GD32303C_START
    的頭像 發表于 11-25 16:06 ?1916次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(6)----GPIO輸入函數說明

    STM32CUBEMX開發GD32F303(8)----USART收發配置

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過GD32303C_START
    的頭像 發表于 11-29 10:40 ?3690次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(8)----USART收發配置

    STM32CUBEMX開發GD32F303(9)----USART通過DMA收發

    概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過GD32303C_START
    的頭像 發表于 11-29 11:15 ?2588次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(9)----USART通過DMA收發

    STM32CUBEMX開發GD32F303(3)----點亮LED

    STM32CUBEMX創建STM32F103工程,同時移植在GD32F303中,同時通過J-LINK燒錄GD32303C_START和GD
    的頭像 發表于 11-23 11:43 ?3386次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(3)----點亮LED

    STM32CUBEMX開發GD32F303(4)----GPIO輸出模式,速率測試、開漏和輸出說明

    STM32CUBEMX創建STM32F103工程,同時移植在GD32F303中,同時通過GD32303C_START開發板內進行驗證。 需
    的頭像 發表于 11-25 11:49 ?2262次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(4)----GPIO輸出模式,速率測試、開漏和輸出說明

    STM32CUBEMX開發GD32F303(10)----雙ADC輪詢模式掃描多個通道

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過GD32303C_START
    的頭像 發表于 11-29 17:38 ?2331次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(10)----雙ADC輪詢模式掃描多個通道

    STM32CUBEMX開發GD32F303(11)----ADC在DMA模式下掃描多個通道

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過GD32303C_START
    的頭像 發表于 11-30 10:59 ?3193次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(11)----ADC在DMA模式下掃描多個通道

    STM32CUBEMX開發GD32F303(12)----輸出PWM及修改PWM頻率占空比

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 本章主要配置
    的頭像 發表于 11-30 14:40 ?4664次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(12)----輸出<b class='flag-5'>PWM</b>及修改<b class='flag-5'>PWM</b><b class='flag-5'>頻率</b>與<b class='flag-5'>占空比</b>

    GD32F303固件庫開發(12)----輸出PWM及修改PWM頻率占空比

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 本章主要配置
    的頭像 發表于 11-30 15:36 ?1.1w次閱讀
    <b class='flag-5'>GD32F303</b>固件庫<b class='flag-5'>開發</b>(12)----輸出<b class='flag-5'>PWM</b>及修改<b class='flag-5'>PWM</b><b class='flag-5'>頻率</b>與<b class='flag-5'>占空比</b>

    STM32CUBEIDE(12)----定時器TIM捕獲PWM測量頻率占空比

    本章STM32CUBEMX配置STM32F103輸出PWM,并在示波器中查看效果。 最近在弄ST和GD的課程,需要GD樣片的可以加群申請:6
    的頭像 發表于 11-30 16:08 ?6053次閱讀
    <b class='flag-5'>STM32</b>CUBEIDE(12)----<b class='flag-5'>定時器</b><b class='flag-5'>TIM</b><b class='flag-5'>捕獲</b><b class='flag-5'>PWM</b><b class='flag-5'>測量</b><b class='flag-5'>頻率</b>與<b class='flag-5'>占空比</b>

    GD32F303固件庫開發13)----定時器TIM捕獲PWM測量頻率占空比

    本章配置GD32F303輸出PWM,同時使用TIM測量PWM頻率和正
    的頭像 發表于 12-07 10:19 ?6821次閱讀
    <b class='flag-5'>GD32F303</b>固件庫<b class='flag-5'>開發</b>(<b class='flag-5'>13</b>)----<b class='flag-5'>定時器</b><b class='flag-5'>TIM</b><b class='flag-5'>捕獲</b><b class='flag-5'>PWM</b><b class='flag-5'>測量</b><b class='flag-5'>頻率</b>與<b class='flag-5'>占空比</b>

    STM32CUBEMX開發GD32F303(14)----IIC之配置OLED

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。
    的頭像 發表于 07-26 13:52 ?2623次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(14)----IIC之配置OLED

    STM32CUBEMX開發GD32F303(15)----外部中斷EXTI

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 使用外部中斷EXTI進行驅
    的頭像 發表于 07-26 15:53 ?1828次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(15)----外部中斷EXTI

    STM32CUBEMX開發GD32F303

    在這使用STM32CUBEMX進行配置STM32F103,移植到兆易創新GD32F303,然后進行測試。
    的頭像 發表于 07-27 09:32 ?2085次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>

    STM32CUBEMX開發GD32F303(17)----內部Flash讀寫

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 本例程主要講解如何對芯片自
    的頭像 發表于 07-27 09:35 ?2319次閱讀
    <b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(17)----內部Flash讀寫
    主站蜘蛛池模板: 五月天婷婷久久 | 日日操夜夜骑 | 久久久免费视频观看 | www.天天干.com | 人人爱人人澡 | 不卡视频免费在线观看 | 精品视频在线视频 | 日韩三级中文 | 国产伦理一区二区三区 | 色播影院性播影院私人影院 | 欧美日韩啪啪 | 国产精品资源网站在线观看 | 天天夜夜爽 | 四虎新网址 | 一个色在线 | 免费视频播放 | 在线观看视频你懂的 | 亚洲第一精品夜夜躁人人爽 | 国产网红主播精品福利大秀专区 | 黄色片啪啪 | 亚洲欧美网站 | 亚洲婷婷六月 | 人人添人人澡人人澡人人人爽 | 色多多视频网站 | 久久国产免费福利永久 | 亚洲 欧洲 另类 综合 自拍 | 视频在线观看高清免费大全 | 免费特黄视频 | 亚洲人成人77777网站 | 草草影院www色极品欧美 | 亚洲日本高清 | 色综合色综合色综合网址 | 2020年亚洲天天爽天天噜 | 色五婷婷| 手机看片1024在线 | 免费公开视频人人人人人人人 | 黄色网址你懂得 | 欧美成人亚洲 | 日本午夜大片免费观看视频 | 色天使色护士 在线视频观看 | 靠比久久 |