日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 功率監(jiān)測(cè)與控制系統(tǒng)DIY——搭建環(huán)境,定時(shí)器翻轉(zhuǎn)LED

          功率監(jiān)測(cè)與控制系統(tǒng)DIY——搭建環(huán)境,定時(shí)器翻轉(zhuǎn)LED

          作者:CoderX9527 時(shí)間:2025-07-16 來(lái)源:EEPW 收藏

          1   任務(wù)目標(biāo)

          使用定時(shí)器實(shí)現(xiàn)1s翻轉(zhuǎn)LED驗(yàn)證開(kāi)發(fā)板時(shí)鐘晶振是否正確

          2   開(kāi)發(fā)工具

          支持的開(kāi)發(fā)環(huán)境很多,我現(xiàn)在中意下面的組合:

          ●   CubeMX圖形化配置、生成工程;

          ●   CubeCLT意法半導(dǎo)體退出的一體化、多操作系統(tǒng)支持的命令行工具,主要面向第三發(fā)集成開(kāi)發(fā)環(huán)境提供商,允許他們?cè)谧约旱腎DE框架內(nèi)集成對(duì)STM32微控制器的支持,包括代碼編譯、燒錄、調(diào)試等功能;

          ●   CLion 一個(gè)功能強(qiáng)大的且智能化的C/C++開(kāi)發(fā)環(huán)境,具有高效的代碼編輯、調(diào)試和項(xiàng)目管理能力;

          ●   STM32CubeIDE/Keil MDK/IAR曾經(jīng)非常流行的STM32開(kāi)發(fā)環(huán)境,這里不做介紹;

          分別安裝STM32CubeMX/STM32CubeCLT以及CLion,然后再Clion 中新建STM32CubeMX 工程。

          在CLion 中第一次新建STM32CubeMX,還需要配置STM32CubeMX和STM32CubeCLT工具路徑,下圖中(2)出點(diǎn)擊“編輯”分別選擇對(duì)應(yīng)的路徑即可。

          ●   下圖在SDK目錄中新建一個(gè)工程;

          ●   STM32CubeMX和STM32CubeCLT工具檢測(cè)OK;

          ●   啟動(dòng)STM32CubeMX配置工程,導(dǎo)出CMake工程即可

          ●   然后CLion打開(kāi)剛才生成的工程目錄即可,自動(dòng)加載CMakeLists.txt并配置工程

          1752639935125569.png

          第一次打開(kāi)CMakeLists.txt工程,彈出下面的配置對(duì)話框,一般選擇Debug類型即可

          1752640005354207.png

          3   ST-Link固件升級(jí)

          第一次調(diào)試工程,彈出ST-Link固件升級(jí)提示,按照下面的提示操作,升級(jí)固件通過(guò)。

          1752640545820118.png

          點(diǎn)擊右下角的YES開(kāi)始升級(jí)固件

          1752640603164340.png

          固件升級(jí)成功

          1752640635979700.png

          升級(jí)后固件版本號(hào)變了

          1752640695296637.png

          4   用戶LED

          LED是指用戶LED,即板子上的綠色LD2,對(duì)應(yīng)PA5,原理圖如下:

          1752640737807653.png

          4.1 定時(shí)器

          這里使用定時(shí)器1,配置如下:

          ●   時(shí)鐘源,選擇Internal Clock(TIM1 位于APB2 Timer Clock)

          ●   預(yù)分頻為1000-1

          ●   向上計(jì)數(shù)模式

          ●   計(jì)數(shù)周期10000-1

          1752640797912245.png

          4.2 為什么這么設(shè)置預(yù)分頻和計(jì)數(shù)周期呢?

          因?yàn)閰⒖际謨?cè)中STM32F411xx的TIM1位于APB2 Timer clock 上,見(jiàn)下圖。而且在時(shí)鐘樹(shù)中把APB2 Timer Clock 設(shè)置為100 MHz。

          所以預(yù)分頻1000-1把TIM1時(shí)鐘頻率配置為100MHz/1000=100kHz

          計(jì)數(shù)周期10000-1即0.1秒鐘產(chǎn)生中斷?!疽獙?shí)現(xiàn)1 秒鐘翻轉(zhuǎn)LED,需要計(jì)數(shù)10 次】

          1752640875200832.png

          1752640905867022.png

          最后使能TIM1的中斷,中斷類型是TIM1 update interrupt and TIM10 global interrupt,表示定時(shí)器溢出產(chǎn)生中斷。

          1752640950730918.png

          5   流程

          ●   主流程中初始化硬件(GPIO、UART2、TIM1)然后已開(kāi)啟中斷的方式啟動(dòng)TIM1

          ●   在TIM1的溢出中斷服務(wù)函數(shù)中層層調(diào)用到HAL_TIM_PeriodElapsedCallback() 函數(shù),計(jì)數(shù)10 次達(dá)到1 秒鐘,翻轉(zhuǎn)用戶LD2

          女超人.jpg

          6 關(guān)鍵代碼

          6.1 主函數(shù)

          int main(void)

          {


            /* USER CODE BEGIN 1 */

            /* USER CODE END 1 */

            /* MCU Configuration--------------------------------------------------------*/

            /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

            HAL_Init();


            /* USER CODE BEGIN Init */

            /* USER CODE END Init */

            /* Configure the system clock */

            SystemClock_Config();

            /* USER CODE BEGIN SysInit */

            /* USER CODE END SysInit */

            /* Initialize all configured peripherals */

            MX_GPIO_Init();

            MX_USART2_UART_Init();

            MX_TIM1_Init(); // 配置定時(shí)器TIM1

            /* USER CODE BEGIN 2 */


            HAL_TIM_Base_Start_IT(&htim1);//啟動(dòng)定時(shí)器TIM1

            /*USER CODE END 2 */


            /*Infinite loop */

            /*USER CODE BEGIN WHILE */

            while (1)

            {

              HAL_Delay(200);

              /* USER CODE END WHILE */


              /* USER CODE BEGIN 3 */

            }

            /* USER CODE END 3 */

          }

          6.2 TIM1定時(shí)溢出回調(diào)函數(shù)

          tim.c中新增加一個(gè)函數(shù),定時(shí)器溢出回調(diào)函數(shù)HAL_TIM_PeriodElapsedCallback()中實(shí)現(xiàn)1秒鐘翻轉(zhuǎn)LED2

          void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

          {

            if (htim->Instance == htim1.Instance)//確保是特定的定時(shí)器實(shí)例(例如TIM1、TIM2 等)

              {

              tim_elapsed_cnt++;

              if (tim_elapsed_cnt % 10 == 0) 

              {

                HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);

              }

            }

          }

          1752641891597046.png

          7   實(shí)測(cè)演示

          7.1 LD2閃爍

          板子中心的綠色LD 每隔一秒鐘點(diǎn)亮、熄滅一次。

          (本文來(lái)源于《EEPW》


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉