前言:
ST官方沒有給STM32L0系列配標準庫,但是有HAL庫。為了移植方便,也是為了順應潮流吧,使用HAL庫開擼。個人水平有限,如有錯誤,還請指正mr.li.ming@qq.com。
提示:1.使用的外部16M晶振,最大速度32MHz.
2.使用的CubeMX版本V4.20.1,使用L0的驅動庫版本1.9.0.
第一步:使用CubeMX生成初始化代碼
先打開CubeMX選擇STM32L053C8T6
為了測試方便,使用內部晶振。點擊Clock Configuration如下圖配置
然后拐回來我們設置一下TIM2, 如圖選擇內部時鐘
同時我們做個輸出檢測腳,因為我的電路板上PC13接一個藍色LED,所以做個下圖的配置。
下面配置定時器
點擊OK, Internal Clock Division(CKD) 這里選No Division(選哪個都無所謂)其實仔細看過技術手冊后發現這項配置跟定時器是沒關系的,這句話是設置定時器時鐘(CK_INT)頻率與數字濾波器(ETR,TIx)使用的采樣頻率之間的分頻比例的(與輸入捕獲相關),0表示濾波器的頻率和定時器的頻率是一樣的。
然后配置定時器的更新中斷
把中斷使能復選框選中,優先級按需選擇,我選擇1點擊OK
生成工程的配置
選擇打開工程進入下一步操作
第二步:Keil中需要的操作
打開main.c在這個位置添加啟動TIM2的代碼,強調一下位置是 /* USER CODE BEGIN 2 */
/* USER CODE END 2 */ 這兩行注釋中間,CubeMX再次生成代碼的時候不會刪除用戶代碼。
這里我們找到了HAL庫里中斷處理回調函數的弱定義,去掉前面的__weak,復制到main.c
加上藍色LED狀態反轉代碼。
編譯0 Error(s),0 Warning(s)
下載,重啟電路板,現象是藍燈亮了測一下藍燈的控制腳信號,即PC13
頻率484Hz的脈沖信號,理論上我們32 000 000經過32分頻是1000 000,周期為1000,應該是每1ms翻轉一次,由于誤差,所以大概1.040ms翻轉一次;痉弦,如果需要更精確可以適當調整。
希望對各位看官有所幫助,并能觸類旁通。 使用HAL庫的勢在必行,多多進行嘗試。
完整的pdf格式文檔51黑下載地址:
STM32L053用HAL庫TIM.pdf
(2.08 MB, 下載次數: 61)
2019-7-19 17:43 上傳
點擊文件名下載附件
|