日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

軟件:


STM32CubeMX V4.25.0  


System Workbench V2.4


固件庫版本:


STM32Cube FW_F1 V1.6.1


硬件:


OneNet 麒麟座V2.3


在STM32CubeMX中新建項目,選擇正確的MCU型號



首先設(shè)置RCC和SYS,如下圖



啟用TIM1,選擇內(nèi)部時鐘源(Internal Clock)。



然后根據(jù)板子實際情況設(shè)置時鐘(麒麟座外部晶振是12M,STM32F103x的最高主頻是72M),如下圖



GPIO設(shè)置 PC7和 PC10為GPIO_OUTPUT, (這是麒麟座V2.3的四個LED管腳其中的兩個)



設(shè)置其中一個默認(rèn)為高電平,另一個默認(rèn)為低電平,User Label分別是LED1和LED4。



設(shè)置TIM1,啟用中斷



由于TIM1是掛在APB2總線上(如何判斷當(dāng)前計時器在哪個總線,文章最后會描述方法),查看時鐘樹我們知道APB2當(dāng)前頻率為72MHz,我們希望每秒鐘發(fā)生2次中斷,就把預(yù)分頻系數(shù)設(shè)置為36000-1,自動重載值為1000-1,得到的計時器更新中斷頻率即為72,000,000/36000/1000=2Hz。



Project - setting ,ToolChain/IDE選擇 SW4STM32



勾選這里



保存以后,點擊任務(wù)欄的生成代碼圖標(biāo)



生成完畢以后在彈出的對話框點擊"Open Project", System Workbench自動打開Eclipse并導(dǎo)入和打開了項目,然后展開項目樹,雙擊編輯main.c,在while(1)之前啟用TIM1并使能其中斷


  /* USER CODE BEGIN 2 */

 HAL_TIM_Base_Start_IT(&htim1);

 

  /* USER CODE END 2 */

然后添加如下代碼(注意此回調(diào)函數(shù)默認(rèn)是__weak定義的,所以我們在這里需要重新定義一下,而且此回調(diào)函數(shù)是所有定時器共用的,所以我們需要先通過if (htim->Instance == htim1.Instance)判斷它是哪個定時器中斷在調(diào)用)



 

/* USER CODE BEGIN 4 */


void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)


{


    if (htim->Instance == htim1.Instance)


    {


        /* Toggle LED */


    HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);


    HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);


    }


}


/* USER CODE END 4 */


 


 


然后右鍵點擊項目,選擇Properties, Run-Debug Settings, 點擊右側(cè)的New,在彈出對話框中選擇Ac6 STM32 Debugging。

然后任務(wù)欄上點擊Run圖,當(dāng)然會報錯的,原因請查看另一篇我的博客(https://blog.csdn.net/toopoo/article/details/79680323),所以需要右鍵點擊  項目名Run.cfg ,給它改個名字,


然后右鍵點擊項目樹里面的項目名稱,選擇“Propeties”,然后在Run/Debug Settings-選擇項目名-Edit-Main-C/C++Application那里點擊“Search Project”,然后選擇出現(xiàn)的默認(rèn)的elf文件:


然后在Debugger-User Defined-Browse 那里選擇你自己改名的配置文件:


然后右鍵點擊那個新的cfg文件,選擇"Open With - Text Editor", 進行如下更改:


source [find interface/stlink.cfg] 更改為 source [find interface/stlink-v2.cfg]


reset_config srst_only srst_nogate connect_assert_srst 這一行改為 reset_config none 


然后再Run一下,就可以了。


程序的作用是讓LED1和LED4交替閃爍,每0.5秒進行一次交替(2Hz)。


如前文所述,我們?nèi)绾沃繲IM1是連接到APB2上的呢?我們可以查代碼,打開main.c


看到


static void MX_GPIO_Init(void);

右鍵點擊 MX_GPIO_Init(void),選擇菜單的“Open Declaration”,然后跳轉(zhuǎn)到它的定義


static void MX_GPIO_Init(void)

{

 

  GPIO_InitTypeDef GPIO_InitStruct;

 

  /* GPIO Ports Clock Enable */

  __HAL_RCC_GPIOD_CLK_ENABLE();

  __HAL_RCC_GPIOC_CLK_ENABLE();

  __HAL_RCC_GPIOA_CLK_ENABLE();

 

  /*Configure GPIO pin Output Level */

  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);

 

  /*Configure GPIO pin Output Level */

  HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);

 

  /*Configure GPIO pins : LED1_Pin LED4_Pin */

  GPIO_InitStruct.Pin = LED1_Pin|LED4_Pin;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

 

}

在HAL_RCC_GPIOD_CLK_ENABLE( )上面點擊右鍵,選擇菜單的“Open Declaration”。會跳轉(zhuǎn)到 stm32f1xx_hal_rcc.h文件,里面代碼如下:


#define __HAL_RCC_GPIOD_CLK_ENABLE()   do { \

                                        __IO uint32_t tmpreg; \

                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN);\

                                        /* Delay after an RCC peripheral clock enabling */\

                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN);\

                                        UNUSED(tmpreg); \

                                      } while(0U)

 

#define __HAL_RCC_ADC1_CLK_ENABLE()   do { \

                                        __IO uint32_t tmpreg; \

                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\

                                        /* Delay after an RCC peripheral clock enabling */\

                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\

                                        UNUSED(tmpreg); \

                                      } while(0U)

 

#define __HAL_RCC_TIM1_CLK_ENABLE()   do { \

                                        __IO uint32_t tmpreg; \

                                        SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\

                                        /* Delay after an RCC peripheral clock enabling */\

                                        tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\

                                        UNUSED(tmpreg); \

                                      } while(0U)

可以看到TIM_CLK相關(guān)寄存器是APB2ENR,說明它是掛在APB2總線上的。


或者我們也可以查看數(shù)據(jù)手冊


可以看到TIM1和TIM8是掛在APB2上的。


關(guān)鍵字:STM32CubeMX  定時器中斷 引用地址:STM32CubeMX學(xué)習(xí)教程之四:定時器中斷

上一篇:使用STM32CubeMX開發(fā):按鍵中斷實驗
下一篇:STM32CubeMX串口接收中斷

推薦閱讀

在IBM?Think 2018大會上,IBM展示了號稱是全球最小的電腦。有多小?你可能需要顯微鏡才能看清,因為這部電腦比鹽粒還要小很多,只有一個平方毫米大小。而且,這個微型電腦的成本只有10美分。??左圖:搭載了兩個微型電腦的64主板 右圖:搭載在主板上的微型電腦在一堆鹽粒中麻雀雖小,也是五臟俱全。這個小不點可是一個貨真價實的電腦,里面有幾十萬個晶...
硬件平臺:stm32F407Zet6軟件平臺:stm32cubeMX 4.7+MDK5.14電路連接:PE8-LED0、PE9-LED1、PE10-LED2、PE11-LED3、PE12-KEY0、PE13-KEY1、PE14-KEY2、PE15-KEY3第一步、使用stm32cubeMX創(chuàng)建工程,選擇相應(yīng)的芯片,配置RCC、SYS、引腳和時鐘如下圖所示:注意,由于按鍵上有上拉電阻,這里選擇中斷模式的時候,我們選擇下降沿觸發(fā)中斷。第二步,配置輸出Ke...
啟迪控股工業(yè)自動化核心企業(yè)——瑞煥瑞典公司旗下Global Operang Drones Sweden AB 公司(以下簡稱“G.O.D.S”公司),作為一家專注于機器人應(yīng)用產(chǎn)品研發(fā)的創(chuàng)新公司,目前已經(jīng)成為瑞典第一批農(nóng)業(yè)機器人的設(shè)計者。 2019年12月,G.O.D.S公司與瑞典Stma Naturbrukscentrum公司簽署合作研發(fā)意向協(xié)議,旨在共同開發(fā)和農(nóng)業(yè)機器人系統(tǒng)。雙方希望通過合...
近日,國家發(fā)改委等13部門聯(lián)合發(fā)布《關(guān)于加快推動制造服務(wù)業(yè)高質(zhì)量發(fā)展的意見》(下稱“意見”),探索實施制造業(yè)供應(yīng)鏈競爭力提升工程。 一、總體要求(一)指導(dǎo)思想。以習(xí)近平新時代中國特色社會主義思想為指導(dǎo),全面貫徹黨的十九大和十九屆二中、三中、四中、五中全會精神,堅定不移貫徹新發(fā)展理念,以推動高質(zhì)量發(fā)展為主題,以深化供給側(cè)結(jié)構(gòu)性改革為...

史海拾趣

問答坊 | AI 解惑

用26MHz的晶體好一點,還是16MHz的好一點,請指教,謝謝???

用26MHz的晶體好一點,還是16MHz的好一點,請指教,謝謝??? 我的藍牙電路可以使用26MHz的晶體,也可以使用16M的,通過內(nèi)部的電路倍頻,均可達到使用要求,那請問用26MHz的晶體好一點,還是16MHz的好一點,請指教,謝謝!!!個人認(rèn)為,26MHZ的頻率 ...…

查看全部問答∨

FPGA QQ群

QQ群: 69611574。歡迎加入?!?

查看全部問答∨

PWM開關(guān)調(diào)整器及其應(yīng)用電路

PWM開關(guān)調(diào)整器及其應(yīng)用電路…

查看全部問答∨

電網(wǎng)斷線報警器

該裝置的電路工作原理見圖13。當(dāng)鐵絲網(wǎng)Fe完好時,LSE的①、②腳間串通,其④腳輸出高電平,三極管VT截止,繼電器J處于釋放狀態(tài),報警器不工作。如果鐵絲網(wǎng)Fe被人剪斷(任意一段),此時LSE的①、②腳相當(dāng)于開路,它的④腳則由原來的高電平狀態(tài)轉(zhuǎn)變 ...…

查看全部問答∨

如何把BINFS盤中的文件讀取出來

想把WINCE5。0的BINFS盤中的DLL文件讀取出來,不知道有什么方法?…

查看全部問答∨

Socket編程報錯 ONLINE

我的做法是Server與Client建立連接,Server端生成一個Custom負(fù)責(zé)接收Client的數(shù)據(jù)包。 程序在Server端接收文件,調(diào)OnClientRead函數(shù): pSocket->m_pTCPServer->OnClientRead(pSocket->m_pTCPServer->m_pOwnerWnd, pSocket, recvBuf, recvLen); ...…

查看全部問答∨

WINCE中的MSG_WAR 如何使用

MSG_WAR信息應(yīng)該打印在哪里,是打印在WINCE的界面上 ,還是打印在 調(diào)試窗口里? 如何設(shè)置才能 出現(xiàn)MSG_WAR信息?…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved