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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1434|回復: 0
打印 上一主題 下一主題
收起左側

基于HAL庫項目工程的搭建教程-STM32L053的進程

[復制鏈接]
跳轉到指定樓層
樓主
ID:1034553 發表于 2022-6-15 00:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前天終于收到板子,只能說這快遞太給力了!雖然包裝的不是很嚴實不過經過長途顛簸來到這偏僻的小城市慶幸沒啥問題,那就上電試試吧!可是一看接口發現竟是老式的USB接口,現在很少用這種接口了啊!不過走運的是幸好室友的老古董MP4還有這種接口的線,拿來試了下發現還是好使的,個人建議以后制作板子還是改用那種mini口的吧,這樣我們用起來也方便。好了廢話不多說了,下面進入正題。 以前用過STM32F103開發過小四軸,當時用的是ST公司提供的STM32 Standard Peripheral Libraries(標準外設庫)開發的,不過當我拿到這款開發板的時候發現ST公司已經不提供這款庫了取而代之的是HAL庫,基本上新出來的MCU提供的都是HAL庫,而且我用的MDK版本也跟不上時代的腳步根本不支持這款MCU。于是經過一番的倒騰,重新安裝軟件、下載HAL庫,具體方法我就不多說了,別的帖子有很詳細的教程不會的可以去參考下,這里有STM32固件庫的鏈接www點st點com/web/cn/catalog/tools/FM147/CL1794/SC961/SS1743
里面有各種MCU的固件庫和資料手冊,需要的可以去里面下載。HAL庫和標準外設庫有些許的不同,習慣標準外設庫開發的人突然接觸HAL庫會感到很不適應,不過用著用著慢慢就好了。當然ST公司也提供了更便捷的開發方式,STM32CubeMx這個軟件就可以直接利用圖形化的方式配置MCU完成初始化十分便捷,而且NUCLEO-L053R8支持mbed功能可以直接使用在線資源也很便捷。這些開發方式的方法我也不介紹了,別的帖子有很詳細的介紹可以參考。下面我主要介紹使用HAL庫搭建項目工程的方法,當是由團隊共同開發一個項目的話一個清晰的項目工程可以便于管理提高開發效率,顯然這是十分重要的。 首先我們新建一個文件夾可以命名為你的項目名稱,再在這個文件下新建7個子文件夾如下圖所示Doc為項目說明文檔,Driver為外設驅動程序,Lib為HAL庫文件,MDK為工程編譯輸出的信息,Startup為啟動文件,STM32L053R8T6為開發板的支持文件只針對開發板開發時使用具體項目可以不需要,User為用戶文件編寫的應用程序可以放在此處。接下來我們把從官網下載的HAL庫里的文件移植到這個項目中,前兩個文件夾里的文件是用戶自己編寫的,主要就是把庫文件移植到Lib中。在Lib中我又新建了兩個文件夾CMSIS和STM32L0xx_HAL_Driver,CMSIS是和MCU芯片內核相關的一些頭文件等如下圖所示里面的文件是根據所用的芯片而變化的,我們用的芯片STM32L053是Cortex-M0+內核所以從庫中移植相對應的頭文件過來。 STM32L0xx_HAL_Driver即是HAL庫中關于MCU外設的封裝庫函數,直接從庫中將此文件復制過來即可。 Startup里是MCU的啟動文件,文件名是startup_stm32l053xx.s從庫里找到添加到此處即可。 STM32L053R8T6是開發板對應的BSP文件如下圖User即是用戶文件里面存放開發者編寫的應用程序、中斷服務程序、外設使能頭文件,如下圖所示至此相關文件也就移植好了,接下來我們開始新建工程并將工程保存在MDK文件夾里。此時會出現如圖所示的界面我們選擇對應的MCU類型,如果沒有相應的MCU是因為你沒下載對應的PACK包,去官網下載安裝后即可這里不再贅述接著出現如下圖所示界面,讓我們選擇項目文件這里可以點取消,因為我們自己已經將文件移植好了在項目中添加這些組及剛才移植的文件如下圖所示 STM32L0xx_HAL_Driver中添加C文件即可。 接下來配置頭文件路徑,點擊按鈕如下圖所示接著點擊C/C++如圖所示 至此項目就配置好了,接下來只需根據自己所用的調試器在Debug中選擇相應的下載器即可,下面是我編寫的一段小燈測試代碼,測試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);  
.           
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产四虎| 国产高清一区二区三区 | 亚洲导航深夜福利涩涩屋 | 国产午夜精品一区二区三区 | 欧美一区二区三区 | 欧美日韩精品一区 | 黄视频国产 | 免费日韩av | 久草网站| 黄色一级电影在线观看 | 人妖无码 | 色频 | 欧美日韩精品在线免费观看 | 男人天堂色 | 精品在线一区 | www.男人天堂.com| 日本中文字幕视频 | 久热精品在线 | 欧美午夜精品久久久久免费视 | 国产欧美一区二区三区久久 | 欧美国产视频 | 欧美成年视频 | 久久精品国产亚洲夜色av网站 | 久久婷婷麻豆国产91天堂 | 日韩在线观看中文字幕 | 欧美日韩国产免费 | 日韩av在线一区二区 | 国产成人叼嘿视频在线观看 | 国产一区二区三区在线看 | 国产精品久久久久久久久久久久久 | 国产精品美女久久久 | 亚洲精品v日韩精品 | 日韩成人免费视频 | 一区二区三区精品在线视频 | 亚洲欧美在线观看 | 国产精品国产成人国产三级 | 中文一区 | 狠狠综合久久av一区二区小说 | 国产精品福利在线观看 | 成人免费视频网 | 欧美国产视频 |