問(wèn)題描述
看到部分同學(xué)已經(jīng)開(kāi)始使用RT-Thread 的PM框架了,當(dāng)然也反映了一些問(wèn)題。
使用RT-Thread Studio 生成的基于STM32L4 的工程,發(fā)現(xiàn)開(kāi)啟PM框架后,lptimer不能工作。
最明顯的現(xiàn)象是:進(jìn)入深睡眠后,定時(shí)、延時(shí)事件不可以用。
這里對(duì)這個(gè)問(wèn)題進(jìn)行分析與提出解決方法
調(diào)試步驟:
一、基于Keil MDK pandora的工程,開(kāi)啟PM后,LPTimer在深睡眠下工作正常。
二、基于RT-Thread Studio生成的工程,LPTimer確實(shí)不能工作。排除不是硬件問(wèn)題。
三、對(duì)比工程代碼,LPTimer初始化,完全一致,pm_drv.c pm.c 等完全一致,依舊無(wú)法解決問(wèn)題。
四、工程board.c 對(duì)比,發(fā)現(xiàn)時(shí)鐘配置一致。
以上步驟,未能確認(rèn)問(wèn)題的所在。
開(kāi)始懷疑:
一、BSP 驅(qū)動(dòng)包不一致,對(duì)比uart等,發(fā)現(xiàn)確實(shí)有點(diǎn)不同,但不是根本原因(與LPTimer無(wú)關(guān))。
二、開(kāi)啟調(diào)試,發(fā)現(xiàn)LPTimer中斷無(wú)法觸發(fā)。
三、查看時(shí)鐘寄存器,發(fā)現(xiàn)問(wèn)題:LPTimer的時(shí)鐘,未使能。
四、回顧發(fā)現(xiàn),RT-Thread Studio生成的工程,不提供STM32 底層驅(qū)動(dòng)初始化文件。
stm32l4xx_hal_msp.c,這個(gè)是板級(jí)的時(shí)鐘外設(shè)初始化文件,里面有一條開(kāi)啟LPTimer時(shí)鐘的操作,初始LPTimer時(shí),會(huì)打開(kāi)LPTimer時(shí)鐘,而工程drv_lptimer.c里,就沒(méi)再打開(kāi)LPTimer時(shí)鐘。
/**
@brief LPTIM MSP Initialization
This function configures the hardware resources used in this example
@param hlptim: LPTIM handle pointer
@retval None
*/
void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef* hlptim)
{
if(hlptim->Instance==LPTIM1)
{
/* USER CODE BEGIN LPTIM1_MspInit 0 */
/* USER CODE END LPTIM1_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_LPTIM1_CLK_ENABLE();
/* USER CODE BEGIN LPTIM1_MspInit 1 */
/* USER CODE END LPTIM1_MspInit 1 */
}
}
解決方法:初始化LPTimer時(shí),不要忘記打開(kāi)LPTimer時(shí)鐘。
問(wèn)題得到解決
總結(jié):
基于RT-Thread Studio生成的工程,默認(rèn)【不包含】板級(jí)初始化文件:stm32l4xx_hal_msp.c,這個(gè)用戶要根據(jù)自己的硬件板,自己實(shí)現(xiàn)。
使用時(shí),可以通過(guò):STM32CubeMX 生成,或手動(dòng)根據(jù)自己的外設(shè),處理好外設(shè)、時(shí)鐘、引腳等初始化工作。
-
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
15735 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1370瀏覽量
41519 -
時(shí)鐘寄存器
+關(guān)注
關(guān)注
0文章
2瀏覽量
4994 -
STM32L4
+關(guān)注
關(guān)注
1文章
42瀏覽量
9599 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
286瀏覽量
15981
發(fā)布評(píng)論請(qǐng)先 登錄
STM32L051上使用RT-Thread (一、新建項(xiàng)目)

如何使用RT-Thread studio開(kāi)發(fā)STM32應(yīng)用
使用RT-Thread Studio開(kāi)發(fā)各個(gè)外設(shè)的驅(qū)動(dòng)的操作方法
STM32L4 RT-Thread Studio-解決lptimer不工作的方法分享
基于RT-Thread Studio的STM32L4開(kāi)發(fā)板支持包設(shè)計(jì)方案分享
RT-Thread Studio 主要亮點(diǎn)功能
RT-Thread STM32 配置系統(tǒng)時(shí)鐘(使用外部晶振)

RT-Thread Studio驅(qū)動(dòng)SD卡

RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

基于RT-Thread Studio學(xué)習(xí)

RT-Thread移植使用webserver (lwip+httpd)

RT-Thread使用Soft RTC(軟件模擬RTC)

評(píng)論