久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1559|回復(fù): 0
收起左側(cè)

基于HAL庫項(xiàng)目工程的搭建教程-STM32L053的進(jìn)程

[復(fù)制鏈接]
ID:1034553 發(fā)表于 2022-6-15 00:24 | 顯示全部樓層 |閱讀模式
前天終于收到板子,只能說這快遞太給力了!雖然包裝的不是很嚴(yán)實(shí)不過經(jīng)過長途顛簸來到這偏僻的小城市慶幸沒啥問題,那就上電試試吧!可是一看接口發(fā)現(xiàn)竟是老式的USB接口,現(xiàn)在很少用這種接口了啊!不過走運(yùn)的是幸好室友的老古董MP4還有這種接口的線,拿來試了下發(fā)現(xiàn)還是好使的,個人建議以后制作板子還是改用那種mini口的吧,這樣我們用起來也方便。好了廢話不多說了,下面進(jìn)入正題。 以前用過STM32F103開發(fā)過小四軸,當(dāng)時用的是ST公司提供的STM32 Standard Peripheral Libraries(標(biāo)準(zhǔn)外設(shè)庫)開發(fā)的,不過當(dāng)我拿到這款開發(fā)板的時候發(fā)現(xiàn)ST公司已經(jīng)不提供這款庫了取而代之的是HAL庫,基本上新出來的MCU提供的都是HAL庫,而且我用的MDK版本也跟不上時代的腳步根本不支持這款MCU。于是經(jīng)過一番的倒騰,重新安裝軟件、下載HAL庫,具體方法我就不多說了,別的帖子有很詳細(xì)的教程不會的可以去參考下,這里有STM32固件庫的鏈接www點(diǎn)st點(diǎn)com/web/cn/catalog/tools/FM147/CL1794/SC961/SS1743
里面有各種MCU的固件庫和資料手冊,需要的可以去里面下載。HAL庫和標(biāo)準(zhǔn)外設(shè)庫有些許的不同,習(xí)慣標(biāo)準(zhǔn)外設(shè)庫開發(fā)的人突然接觸HAL庫會感到很不適應(yīng),不過用著用著慢慢就好了。當(dāng)然ST公司也提供了更便捷的開發(fā)方式,STM32CubeMx這個軟件就可以直接利用圖形化的方式配置MCU完成初始化十分便捷,而且NUCLEO-L053R8支持mbed功能可以直接使用在線資源也很便捷。這些開發(fā)方式的方法我也不介紹了,別的帖子有很詳細(xì)的介紹可以參考。下面我主要介紹使用HAL庫搭建項(xiàng)目工程的方法,當(dāng)是由團(tuán)隊(duì)共同開發(fā)一個項(xiàng)目的話一個清晰的項(xiàng)目工程可以便于管理提高開發(fā)效率,顯然這是十分重要的。 首先我們新建一個文件夾可以命名為你的項(xiàng)目名稱,再在這個文件下新建7個子文件夾如下圖所示Doc為項(xiàng)目說明文檔,Driver為外設(shè)驅(qū)動程序,Lib為HAL庫文件,MDK為工程編譯輸出的信息,Startup為啟動文件,STM32L053R8T6為開發(fā)板的支持文件只針對開發(fā)板開發(fā)時使用具體項(xiàng)目可以不需要,User為用戶文件編寫的應(yīng)用程序可以放在此處。接下來我們把從官網(wǎng)下載的HAL庫里的文件移植到這個項(xiàng)目中,前兩個文件夾里的文件是用戶自己編寫的,主要就是把庫文件移植到Lib中。在Lib中我又新建了兩個文件夾CMSIS和STM32L0xx_HAL_Driver,CMSIS是和MCU芯片內(nèi)核相關(guān)的一些頭文件等如下圖所示里面的文件是根據(jù)所用的芯片而變化的,我們用的芯片STM32L053是Cortex-M0+內(nèi)核所以從庫中移植相對應(yīng)的頭文件過來。 STM32L0xx_HAL_Driver即是HAL庫中關(guān)于MCU外設(shè)的封裝庫函數(shù),直接從庫中將此文件復(fù)制過來即可。 Startup里是MCU的啟動文件,文件名是startup_stm32l053xx.s從庫里找到添加到此處即可。 STM32L053R8T6是開發(fā)板對應(yīng)的BSP文件如下圖User即是用戶文件里面存放開發(fā)者編寫的應(yīng)用程序、中斷服務(wù)程序、外設(shè)使能頭文件,如下圖所示至此相關(guān)文件也就移植好了,接下來我們開始新建工程并將工程保存在MDK文件夾里。此時會出現(xiàn)如圖所示的界面我們選擇對應(yīng)的MCU類型,如果沒有相應(yīng)的MCU是因?yàn)槟銢]下載對應(yīng)的PACK包,去官網(wǎng)下載安裝后即可這里不再贅述接著出現(xiàn)如下圖所示界面,讓我們選擇項(xiàng)目文件這里可以點(diǎn)取消,因?yàn)槲覀冏约阂呀?jīng)將文件移植好了在項(xiàng)目中添加這些組及剛才移植的文件如下圖所示 STM32L0xx_HAL_Driver中添加C文件即可。 接下來配置頭文件路徑,點(diǎn)擊按鈕如下圖所示接著點(diǎn)擊C/C++如圖所示 至此項(xiàng)目就配置好了,接下來只需根據(jù)自己所用的調(diào)試器在Debug中選擇相應(yīng)的下載器即可,下面是我編寫的一段小燈測試代碼,測試OK
view plaincopy to clipboardprint?
.         #include "stm32l0xx_hal.h"  
.           
.         void SystemClock_Config(void);  
.         static void MX_GPIO_Init(void);  
.           
.         int main(void)  
.         {  
.           
.           HAL_Init();  
.           
.           SystemClock_Config();  
.           
.           MX_GPIO_Init();  
.           
.           while (1)  
.           {  
.         if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == 1)  
.         {     
.         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);  
.         HAL_Delay(500);  
.         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);  
.         HAL_Delay(500);  
.         }  
.         else  
.         {  
.         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);  
.         }  
.         }  
.           
.         }  
.           
.         void SystemClock_Config(void)  
.         {  
.           
.           RCC_OscInitTypeDef RCC_OscInitStruct;  
.           RCC_ClkInitTypeDef RCC_ClkInitStruct;  
.           
.           __PWR_CLK_ENABLE();  
.           
.           __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);  
.           
.           RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;  
.           RCC_OscInitStruct.HSIState = RCC_HSI_ON;  
.           RCC_OscInitStruct.HSICalibrationValue = 16;  
.           RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  
.           RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;  
.           RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_4;  
.           RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2;  
.           HAL_RCC_OscConfig(&RCC_OscInitStruct);  
.           
.           RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;  
.           RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  
.           RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  
.           RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  
.           RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  
.           HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);  
.           
.           HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);  
.           
.           HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);  
.           
.           HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);  
.         }  
.           
.         void MX_GPIO_Init(void)  
.         {  
.           
.           GPIO_InitTypeDef GPIO_InitStruct;  
.           
.           __GPIOC_CLK_ENABLE();  
.           __GPIOA_CLK_ENABLE();  
.           
.           GPIO_InitStruct.Pin = GPIO_PIN_13;  
.           GPIO_InitStruct.Mode = GPIO_MODE_INPUT;  
.           GPIO_InitStruct.Pull = GPIO_NOPULL;  
.           HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);  
.           
.           GPIO_InitStruct.Pin = GPIO_PIN_5;  
.           GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  
.           GPIO_InitStruct.Pull = GPIO_NOPULL;  
.           GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;  
.           HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);  
.           
}
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色片中文字幕 | 久久成人一区 | 四色永久访问 | 黑人巨大猛烈捣出白浆 | 又色又爽又黄gif动态图 | 三级视频在线观看 | 亚洲一区二区免费 | 国产黄视频在线观看 | 一本到av | 国产精品一区av | 国产精品网站在线观看 | 欧美三级韩国三级日本三斤在线观看 | 欧美激情视频一区二区三区 | 欧美视频一区二区三区 | 欧美一级淫片免费视频黄 | 婷婷久久五月天 | 日本中文字幕在线播放 | 日韩一二三 | av影片在线观看 | 久久久久97 | 久久久综合网 | 国产成人在线观看免费网站 | 99国产在线视频 | 少妇一级淫片免费放 | 欧美精品xxx | 性色av网站 | 日韩福利视频 | 久久综合五月天 | 99久久精品一区二区成人 | 国产成人精品一区二区三区视频 | 久久av网 | 久久久久久久久国产精品 | 国产精品一区二 | 国产成人小视频 | 国产精品国产成人国产三级 | 黄色片一区二区 | 国产一区二区三区四区 | 久久一区精品 | 日韩一区二区视频 | 欧美精品黄色 | 亚洲国产免费 |