Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lfmiao0
rt-thread
提交
943c5ccc
R
rt-thread
项目概览
lfmiao0
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
943c5ccc
编写于
5月 06, 2019
作者:
E
EvalZero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp][stm32l476-st-nucleo]add low power feature support for stm32l476-st-nucleo
上级
c57f2370
变更
11
显示空白变更内容
内联
并排
Showing
11 changed file
with
709 addition
and
117 deletion
+709
-117
bsp/stm32/libraries/HAL_Drivers/SConscript
bsp/stm32/libraries/HAL_Drivers/SConscript
+4
-0
bsp/stm32/libraries/HAL_Drivers/drv_lptim.c
bsp/stm32/libraries/HAL_Drivers/drv_lptim.c
+132
-0
bsp/stm32/libraries/HAL_Drivers/drv_lptim.h
bsp/stm32/libraries/HAL_Drivers/drv_lptim.h
+23
-0
bsp/stm32/libraries/HAL_Drivers/drv_pm.c
bsp/stm32/libraries/HAL_Drivers/drv_pm.c
+249
-0
bsp/stm32/libraries/STM32L4xx_HAL/SConscript
bsp/stm32/libraries/STM32L4xx_HAL/SConscript
+3
-0
bsp/stm32/stm32l476-st-nucleo/.config
bsp/stm32/stm32l476-st-nucleo/.config
+35
-17
bsp/stm32/stm32l476-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h
...76-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h
+1
-1
bsp/stm32/stm32l476-st-nucleo/board/board.c
bsp/stm32/stm32l476-st-nucleo/board/board.c
+224
-49
bsp/stm32/stm32l476-st-nucleo/board/board.h
bsp/stm32/stm32l476-st-nucleo/board/board.h
+11
-0
bsp/stm32/stm32l476-st-nucleo/project.uvprojx
bsp/stm32/stm32l476-st-nucleo/project.uvprojx
+20
-41
bsp/stm32/stm32l476-st-nucleo/rtconfig.h
bsp/stm32/stm32l476-st-nucleo/rtconfig.h
+7
-9
未找到文件。
bsp/stm32/libraries/HAL_Drivers/SConscript
浏览文件 @
943c5ccc
...
...
@@ -39,6 +39,10 @@ if GetDepend(['RT_USING_ADC']):
if
GetDepend
([
'RT_USING_CAN'
]):
src
+=
[
'drv_can.c'
]
if
GetDepend
([
'RT_USING_PM'
,
'SOC_SERIES_STM32L4'
]):
src
+=
[
'drv_pm.c'
]
src
+=
[
'drv_lptim.c'
]
if
GetDepend
(
'BSP_USING_SDRAM'
):
src
+=
[
'drv_sdram.c'
]
...
...
bsp/stm32/libraries/HAL_Drivers/drv_lptim.c
0 → 100644
浏览文件 @
943c5ccc
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2017-08-01 tanek the first version
*/
#include <board.h>
#include <drv_lptim.h>
static
LPTIM_HandleTypeDef
LptimHandle
;
void
HAL_LPTIM_MspInit
(
LPTIM_HandleTypeDef
*
hlptim
)
{
if
(
hlptim
->
Instance
==
LPTIM1
)
{
/* Peripheral clock enable */
__HAL_RCC_LPTIM1_CLK_ENABLE
();
}
}
void
LPTIM1_IRQHandler
(
void
)
{
HAL_LPTIM_IRQHandler
(
&
LptimHandle
);
}
void
HAL_LPTIM_CompareMatchCallback
(
LPTIM_HandleTypeDef
*
hlptim
)
{
/* enter interrupt */
rt_interrupt_enter
();
/* leave interrupt */
rt_interrupt_leave
();
}
/**
* This function get current count value of LPTIM
*
* @return the count vlaue
*/
rt_uint32_t
stm32l4_lptim_get_current_tick
(
void
)
{
return
HAL_LPTIM_ReadCounter
(
&
LptimHandle
);
}
/**
* This function get the max value that LPTIM can count
*
* @return the max count
*/
rt_uint32_t
stm32l4_lptim_get_tick_max
(
void
)
{
return
(
0xFFFF
);
}
/**
* This function start LPTIM with reload value
*
* @param reload The value that LPTIM count down from
*
* @return RT_EOK
*/
rt_err_t
stm32l4_lptim_start
(
rt_uint32_t
reload
)
{
HAL_LPTIM_TimeOut_Start_IT
(
&
LptimHandle
,
0xFFFF
,
reload
);
return
(
RT_EOK
);
}
/**
* This function stop LPTIM
*/
void
stm32l4_lptim_stop
(
void
)
{
rt_uint32_t
_ier
;
_ier
=
LptimHandle
.
Instance
->
IER
;
LptimHandle
.
Instance
->
ICR
=
LptimHandle
.
Instance
->
ISR
&
_ier
;
}
/**
* This function get the count clock of LPTIM
*
* @return the count clock frequency in Hz
*/
rt_uint32_t
stm32l4_lptim_get_countfreq
(
void
)
{
return
32000
/
32
;
}
/**
* This function initialize the lptim
*/
int
stm32l4_hw_lptim_init
(
void
)
{
RCC_OscInitTypeDef
RCC_OscInitStruct
=
{
0
};
RCC_PeriphCLKInitTypeDef
RCC_PeriphCLKInitStruct
=
{
0
};
/* Enable LSI clock */
RCC_OscInitStruct
.
OscillatorType
=
RCC_OSCILLATORTYPE_LSI
;
RCC_OscInitStruct
.
LSIState
=
RCC_LSI_ON
;
RCC_OscInitStruct
.
PLL
.
PLLState
=
RCC_PLL_NONE
;
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
);
/* Select the LSI clock as LPTIM peripheral clock */
RCC_PeriphCLKInitStruct
.
PeriphClockSelection
=
RCC_PERIPHCLK_LPTIM1
;
RCC_PeriphCLKInitStruct
.
Lptim1ClockSelection
=
RCC_LPTIM1CLKSOURCE_LSI
;
HAL_RCCEx_PeriphCLKConfig
(
&
RCC_PeriphCLKInitStruct
);
LptimHandle
.
Instance
=
LPTIM1
;
LptimHandle
.
Init
.
Clock
.
Source
=
LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC
;
LptimHandle
.
Init
.
Clock
.
Prescaler
=
LPTIM_PRESCALER_DIV32
;
LptimHandle
.
Init
.
Trigger
.
Source
=
LPTIM_TRIGSOURCE_SOFTWARE
;
LptimHandle
.
Init
.
OutputPolarity
=
LPTIM_OUTPUTPOLARITY_HIGH
;
LptimHandle
.
Init
.
UpdateMode
=
LPTIM_UPDATE_IMMEDIATE
;
LptimHandle
.
Init
.
CounterSource
=
LPTIM_COUNTERSOURCE_INTERNAL
;
if
(
HAL_LPTIM_Init
(
&
LptimHandle
)
!=
HAL_OK
)
{
return
-
1
;
}
NVIC_ClearPendingIRQ
(
LPTIM1_IRQn
);
NVIC_SetPriority
(
LPTIM1_IRQn
,
0
);
NVIC_EnableIRQ
(
LPTIM1_IRQn
);
return
0
;
}
INIT_DEVICE_EXPORT
(
stm32l4_hw_lptim_init
);
bsp/stm32/libraries/HAL_Drivers/drv_lptim.h
0 → 100644
浏览文件 @
943c5ccc
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2012-08-21 heyuanjie87 the first version
*/
#ifndef __DRV_PMTIMER_H__
#define __DRV_PMTIMER_H__
#include <rtthread.h>
rt_uint32_t
stm32l4_lptim_get_countfreq
(
void
);
rt_uint32_t
stm32l4_lptim_get_tick_max
(
void
);
rt_uint32_t
stm32l4_lptim_get_current_tick
(
void
);
rt_err_t
stm32l4_lptim_start
(
rt_uint32_t
load
);
void
stm32l4_lptim_stop
(
void
);
#endif
/* __DRV_PMTIMER_H__ */
bsp/stm32/libraries/HAL_Drivers/drv_pm.c
0 → 100644
浏览文件 @
943c5ccc
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2018-07-31 tanek first version
* 2018-05-05 Zero-Free adapt to the new power management interface
*/
#include <board.h>
#include <drv_lptim.h>
static
void
uart_console_reconfig
(
void
)
{
struct
serial_configure
config
=
RT_SERIAL_CONFIG_DEFAULT
;
rt_device_control
(
rt_console_get_device
(),
RT_DEVICE_CTRL_CONFIG
,
&
config
);
}
/**
* This function will put STM32L4xx into sleep mode.
*
* @param pm pointer to power manage structure
*/
static
void
sleep
(
struct
rt_pm
*
pm
,
uint8_t
mode
)
{
switch
(
mode
)
{
case
PM_SLEEP_MODE_NONE
:
break
;
case
PM_SLEEP_MODE_IDLE
:
// __WFI();
break
;
case
PM_SLEEP_MODE_LIGHT
:
if
(
pm
->
run_mode
==
PM_RUN_MODE_LOW_SPEED
)
{
/* Enter LP SLEEP Mode, Enable low-power regulator */
HAL_PWR_EnterSLEEPMode
(
PWR_LOWPOWERREGULATOR_ON
,
PWR_SLEEPENTRY_WFI
);
}
else
{
/* Enter SLEEP Mode, Main regulator is ON */
HAL_PWR_EnterSLEEPMode
(
PWR_MAINREGULATOR_ON
,
PWR_SLEEPENTRY_WFI
);
}
break
;
case
PM_SLEEP_MODE_DEEP
:
/* Enter STOP 2 mode */
HAL_PWREx_EnterSTOP2Mode
(
PWR_STOPENTRY_WFI
);
/* Re-configure the system clock */
SystemClock_ReConfig
(
pm
->
run_mode
);
break
;
case
PM_SLEEP_MODE_STANDBY
:
/* Enter STANDBY mode */
HAL_PWR_EnterSTANDBYMode
();
break
;
case
PM_SLEEP_MODE_SHUTDOWN
:
/* Enter SHUTDOWNN mode */
HAL_PWREx_EnterSHUTDOWNMode
();
break
;
default:
RT_ASSERT
(
0
);
break
;
}
}
static
uint8_t
run_speed
[
PM_RUN_MODE_MAX
][
2
]
=
{
{
80
,
0
},
{
80
,
1
},
{
24
,
2
},
{
2
,
3
},
};
static
void
run
(
struct
rt_pm
*
pm
,
uint8_t
mode
,
uint32_t
frequency
)
{
static
uint8_t
last_mode
;
static
char
*
run_str
[]
=
PM_RUN_MODE_NAMES
;
if
(
mode
==
last_mode
)
return
;
last_mode
=
mode
;
/* 1. 设置 MSI 作为 SYSCLK 时钟源,以修改 PLL */
SystemClock_MSI_ON
();
/* 2. 根据RUN模式切换时钟频率(HSI) */
switch
(
mode
)
{
case
PM_RUN_MODE_HIGH_SPEED
:
case
PM_RUN_MODE_NORMAL_SPEED
:
SystemClock_80M
();
/* Configure the main internal regulator output voltage (Range1 by default)*/
HAL_PWREx_ControlVoltageScaling
(
PWR_REGULATOR_VOLTAGE_SCALE1
);
break
;
case
PM_RUN_MODE_MEDIUM_SPEED
:
SystemClock_24M
();
/* Configure the main internal regulator output voltage */
HAL_PWREx_ControlVoltageScaling
(
PWR_REGULATOR_VOLTAGE_SCALE2
);
break
;
case
PM_RUN_MODE_LOW_SPEED
:
SystemClock_2M
();
/* Enter LP RUN mode */
HAL_PWREx_EnableLowPowerRunMode
();
break
;
default:
break
;
}
/* 3. 关闭 MSI 时钟 */
// SystemClock_MSI_OFF();
/* 4. 更新外设时钟 */
uart_console_reconfig
();
/* Re-Configure the Systick time */
HAL_SYSTICK_Config
(
HAL_RCC_GetHCLKFreq
()
/
RT_TICK_PER_SECOND
);
/* Re-Configure the Systick */
HAL_SYSTICK_CLKSourceConfig
(
SYSTICK_CLKSOURCE_HCLK
);
rt_kprintf
(
"switch to %s mode, frequency = %d MHz
\n
"
,
run_str
[
mode
],
run_speed
[
mode
][
0
]);
}
/**
* This function caculate the PM tick from OS tick
*
* @param tick OS tick
*
* @return the PM tick
*/
static
rt_tick_t
stm32l4_pm_tick_from_os_tick
(
rt_tick_t
tick
)
{
rt_uint32_t
freq
=
stm32l4_lptim_get_countfreq
();
return
(
freq
*
tick
/
RT_TICK_PER_SECOND
);
}
/**
* This function caculate the OS tick from PM tick
*
* @param tick PM tick
*
* @return the OS tick
*/
static
rt_tick_t
stm32l4_os_tick_from_pm_tick
(
rt_uint32_t
tick
)
{
static
rt_uint32_t
os_tick_remain
=
0
;
rt_uint32_t
ret
,
freq
;
freq
=
stm32l4_lptim_get_countfreq
();
ret
=
(
tick
*
RT_TICK_PER_SECOND
+
os_tick_remain
)
/
freq
;
os_tick_remain
+=
(
tick
*
RT_TICK_PER_SECOND
);
os_tick_remain
%=
freq
;
return
ret
;
}
/**
* This function start the timer of pm
*
* @param pm Pointer to power manage structure
* @param timeout How many OS Ticks that MCU can sleep
*/
static
void
pm_timer_start
(
struct
rt_pm
*
pm
,
rt_uint32_t
timeout
)
{
RT_ASSERT
(
pm
!=
RT_NULL
);
RT_ASSERT
(
timeout
>
0
);
if
(
timeout
!=
RT_TICK_MAX
)
{
/* Convert OS Tick to pmtimer timeout value */
timeout
=
stm32l4_pm_tick_from_os_tick
(
timeout
);
if
(
timeout
>
stm32l4_lptim_get_tick_max
())
{
timeout
=
stm32l4_lptim_get_tick_max
();
}
/* Enter PM_TIMER_MODE */
stm32l4_lptim_start
(
timeout
);
}
}
/**
* This function stop the timer of pm
*
* @param pm Pointer to power manage structure
*/
static
void
pm_timer_stop
(
struct
rt_pm
*
pm
)
{
RT_ASSERT
(
pm
!=
RT_NULL
);
/* Reset pmtimer status */
stm32l4_lptim_stop
();
}
/**
* This function calculate how many OS Ticks that MCU have suspended
*
* @param pm Pointer to power manage structure
*
* @return OS Ticks
*/
static
rt_tick_t
pm_timer_get_tick
(
struct
rt_pm
*
pm
)
{
rt_uint32_t
timer_tick
;
RT_ASSERT
(
pm
!=
RT_NULL
);
timer_tick
=
stm32l4_lptim_get_current_tick
();
return
stm32l4_os_tick_from_pm_tick
(
timer_tick
);
}
/**
* This function initialize the power manager
*/
int
drv_pm_hw_init
(
void
)
{
static
const
struct
rt_pm_ops
_ops
=
{
sleep
,
run
,
pm_timer_start
,
pm_timer_stop
,
pm_timer_get_tick
};
rt_uint8_t
timer_mask
=
0
;
/* Enable Power Clock */
__HAL_RCC_PWR_CLK_ENABLE
();
/* initialize timer mask */
timer_mask
=
1UL
<<
PM_SLEEP_MODE_DEEP
;
/* initialize system pm module */
rt_system_pm_init
(
&
_ops
,
timer_mask
,
RT_NULL
);
return
0
;
}
INIT_BOARD_EXPORT
(
drv_pm_hw_init
);
bsp/stm32/libraries/STM32L4xx_HAL/SConscript
浏览文件 @
943c5ccc
...
...
@@ -84,6 +84,9 @@ if GetDepend(['RT_USING_MTD_NOR']):
if
GetDepend
([
'RT_USING_MTD_NAND'
]):
src
+=
[
'STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_nand.c'
]
if
GetDepend
([
'RT_USING_PM'
]):
src
+=
[
'STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_lptim.c'
]
if
GetDepend
([
'BSP_USING_ON_CHIP_FLASH'
]):
src
+=
[
'STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c'
]
src
+=
[
'STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c'
]
...
...
bsp/stm32/stm32l476-st-nucleo/.config
浏览文件 @
943c5ccc
...
...
@@ -7,6 +7,7 @@
# RT-Thread Kernel
#
CONFIG_RT_NAME_MAX
=
8
# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
# CONFIG_RT_USING_SMP is not set
CONFIG_RT_ALIGN_SIZE
=
4
# CONFIG_RT_THREAD_PRIORITY_8 is not set
...
...
@@ -18,7 +19,7 @@ CONFIG_RT_USING_OVERFLOW_CHECK=y
CONFIG_RT_USING_HOOK
=
y
CONFIG_RT_USING_IDLE_HOOK
=
y
CONFIG_RT_IDEL_HOOK_LIST_SIZE
=
4
CONFIG_IDLE_THREAD_STACK_SIZE
=
256
CONFIG_IDLE_THREAD_STACK_SIZE
=
1024
# CONFIG_RT_USING_TIMER_SOFT is not set
CONFIG_RT_DEBUG
=
y
CONFIG_RT_DEBUG_COLOR
=
y
...
...
@@ -111,6 +112,7 @@ CONFIG_FINSH_ARG_MAX=10
#
CONFIG_RT_USING_DEVICE_IPC
=
y
CONFIG_RT_PIPE_BUFSZ
=
512
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
CONFIG_RT_USING_SERIAL
=
y
CONFIG_RT_SERIAL_USING_DMA
=
y
CONFIG_RT_SERIAL_RB_BUFSZ
=
64
...
...
@@ -124,13 +126,15 @@ CONFIG_RT_USING_PIN=y
# CONFIG_RT_USING_MTD_NOR is not set
# CONFIG_RT_USING_MTD_NAND is not set
# CONFIG_RT_USING_MTD is not set
# CONFIG_RT_USING_PM is not set
CONFIG_RT_USING_PM
=
y
CONFIG_RT_USING_RTC
=
y
# CONFIG_RT_USING_ALARM is not set
# CONFIG_RT_USING_SOFT_RTC is not set
# CONFIG_RT_USING_SDIO is not set
# CONFIG_RT_USING_SPI is not set
# CONFIG_RT_USING_WDT is not set
# CONFIG_RT_USING_AUDIO is not set
# CONFIG_RT_USING_SENSOR is not set
#
# Using WiFi
...
...
@@ -158,6 +162,11 @@ CONFIG_RT_USING_LIBC=y
#
# CONFIG_RT_USING_SAL is not set
#
# Network interface device
#
# CONFIG_RT_USING_NETDEV is not set
#
# light weight TCP/IP stack
#
...
...
@@ -181,16 +190,9 @@ CONFIG_RT_USING_LIBC=y
#
# Utilities
#
# CONFIG_RT_USING_LOGTRACE is not set
# CONFIG_RT_USING_RYM is not set
# CONFIG_RT_USING_ULOG is not set
# CONFIG_RT_USING_UTEST is not set
#
# ARM CMSIS
#
# CONFIG_RT_USING_CMSIS_OS is not set
# CONFIG_RT_USING_RTT_CMSIS is not set
# CONFIG_RT_USING_LWP is not set
#
...
...
@@ -202,10 +204,12 @@ CONFIG_RT_USING_LIBC=y
#
# CONFIG_PKG_USING_PAHOMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
# CONFIG_PKG_USING_CJSON is not set
# CONFIG_PKG_USING_JSMN is not set
# CONFIG_PKG_USING_LIBMODBUS is not set
# CONFIG_PKG_USING_LJSON is not set
# CONFIG_PKG_USING_EZXML is not set
# CONFIG_PKG_USING_NANOPB is not set
...
...
@@ -223,6 +227,7 @@ CONFIG_RT_USING_LIBC=y
# Wiced WiFi
#
# CONFIG_PKG_USING_WLAN_WICED is not set
# CONFIG_PKG_USING_RW007 is not set
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
...
...
@@ -236,6 +241,9 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
# CONFIG_PKG_USING_TENCENT_IOTKIT is not set
# CONFIG_PKG_USING_NIMBLE is not set
# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
#
# security packages
...
...
@@ -256,6 +264,7 @@ CONFIG_RT_USING_LIBC=y
#
# CONFIG_PKG_USING_OPENMV is not set
# CONFIG_PKG_USING_MUPDF is not set
# CONFIG_PKG_USING_STEMWIN is not set
#
# tools packages
...
...
@@ -267,6 +276,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_RDB is not set
# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
# CONFIG_PKG_USING_ADBD is not set
#
# system packages
...
...
@@ -283,10 +293,13 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
#
# peripheral libraries and drivers
#
# CONFIG_PKG_USING_SENSORS_DRIVERS is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_AHT10 is not set
...
...
@@ -294,6 +307,16 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_STM32_SDIO is not set
# CONFIG_PKG_USING_ICM20608 is not set
# CONFIG_PKG_USING_U8G2 is not set
# CONFIG_PKG_USING_BUTTON is not set
# CONFIG_PKG_USING_MPU6XXX is not set
# CONFIG_PKG_USING_PCF8574 is not set
# CONFIG_PKG_USING_SX12XX is not set
# CONFIG_PKG_USING_SIGNAL_LED is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AT24CXX is not set
#
# miscellaneous packages
...
...
@@ -308,10 +331,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_ZLIB is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
#
# sample package
#
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
#
# samples: kernel and components samples
...
...
@@ -320,11 +340,9 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
#
# example package: hello
#
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
# CONFIG_PKG_USING_NNOM is not set
CONFIG_SOC_FAMILY_STM32
=
y
CONFIG_SOC_SERIES_STM32L4
=
y
...
...
bsp/stm32/stm32l476-st-nucleo/board/CubeMX_Config/Inc/stm32l4xx_hal_conf.h
浏览文件 @
943c5ccc
...
...
@@ -69,7 +69,7 @@
/*#define HAL_IWDG_MODULE_ENABLED */
/*#define HAL_LTDC_MODULE_ENABLED */
/*#define HAL_LCD_MODULE_ENABLED */
/*#define HAL_LPTIM_MODULE_ENABLED */
#define HAL_LPTIM_MODULE_ENABLED
/*#define HAL_NAND_MODULE_ENABLED */
/*#define HAL_NOR_MODULE_ENABLED */
/*#define HAL_OPAMP_MODULE_ENABLED */
...
...
bsp/stm32/stm32l476-st-nucleo/board/board.c
浏览文件 @
943c5ccc
...
...
@@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2019-02-05 gw first version
* 2019-05-05 Zero-Free Adding multiple configurations for system clock frequency
*/
#include <board.h>
...
...
@@ -40,8 +41,8 @@ void SystemClock_Config(void)
}
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct
.
ClockType
=
RCC_CLOCKTYPE_HCLK
|
RCC_CLOCKTYPE_SYSCLK
|
RCC_CLOCKTYPE_PCLK1
|
RCC_CLOCKTYPE_PCLK2
;
RCC_ClkInitStruct
.
ClockType
=
RCC_CLOCKTYPE_HCLK
|
RCC_CLOCKTYPE_SYSCLK
|
RCC_CLOCKTYPE_PCLK1
|
RCC_CLOCKTYPE_PCLK2
;
RCC_ClkInitStruct
.
SYSCLKSource
=
RCC_SYSCLKSOURCE_PLLCLK
;
RCC_ClkInitStruct
.
AHBCLKDivider
=
RCC_SYSCLK_DIV1
;
RCC_ClkInitStruct
.
APB1CLKDivider
=
RCC_HCLK_DIV1
;
...
...
@@ -64,3 +65,177 @@ void SystemClock_Config(void)
Error_Handler
();
}
}
#ifdef RT_USING_PM
void
SystemClock_MSI_ON
(
void
)
{
RCC_OscInitTypeDef
RCC_OscInitStruct
=
{
0
};
RCC_ClkInitTypeDef
RCC_ClkInitStruct
=
{
0
};
/* Initializes the CPU, AHB and APB busses clocks */
RCC_OscInitStruct
.
OscillatorType
=
RCC_OSCILLATORTYPE_MSI
;
RCC_OscInitStruct
.
MSIState
=
RCC_MSI_ON
;
if
(
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
)
!=
HAL_OK
)
{
RT_ASSERT
(
0
);
}
RCC_ClkInitStruct
.
ClockType
=
RCC_CLOCKTYPE_SYSCLK
;
RCC_ClkInitStruct
.
SYSCLKSource
=
RCC_SYSCLKSOURCE_MSI
;
if
(
HAL_RCC_ClockConfig
(
&
RCC_ClkInitStruct
,
FLASH_LATENCY_1
)
!=
HAL_OK
)
{
Error_Handler
();
}
}
void
SystemClock_MSI_OFF
(
void
)
{
RCC_OscInitTypeDef
RCC_OscInitStruct
=
{
0
};
RCC_OscInitStruct
.
OscillatorType
=
RCC_OSCILLATORTYPE_MSI
;
RCC_OscInitStruct
.
HSIState
=
RCC_MSI_OFF
;
RCC_OscInitStruct
.
PLL
.
PLLState
=
RCC_PLL_NONE
;
/* No update on PLL */
if
(
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
)
!=
HAL_OK
)
{
Error_Handler
();
}
}
void
SystemClock_80M
(
void
)
{
RCC_OscInitTypeDef
RCC_OscInitStruct
;
RCC_ClkInitTypeDef
RCC_ClkInitStruct
;
/**Initializes the CPU, AHB and APB busses clocks */
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
.
PLLM
=
1
;
RCC_OscInitStruct
.
PLL
.
PLLN
=
10
;
RCC_OscInitStruct
.
PLL
.
PLLP
=
RCC_PLLP_DIV7
;
RCC_OscInitStruct
.
PLL
.
PLLQ
=
RCC_PLLQ_DIV2
;
RCC_OscInitStruct
.
PLL
.
PLLR
=
RCC_PLLR_DIV2
;
if
(
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
)
!=
HAL_OK
)
{
Error_Handler
();
}
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct
.
ClockType
=
RCC_CLOCKTYPE_HCLK
|
RCC_CLOCKTYPE_SYSCLK
|
RCC_CLOCKTYPE_PCLK1
|
RCC_CLOCKTYPE_PCLK2
;
RCC_ClkInitStruct
.
SYSCLKSource
=
RCC_SYSCLKSOURCE_PLLCLK
;
RCC_ClkInitStruct
.
AHBCLKDivider
=
RCC_SYSCLK_DIV1
;
RCC_ClkInitStruct
.
APB1CLKDivider
=
RCC_HCLK_DIV1
;
RCC_ClkInitStruct
.
APB2CLKDivider
=
RCC_HCLK_DIV1
;
if
(
HAL_RCC_ClockConfig
(
&
RCC_ClkInitStruct
,
FLASH_LATENCY_4
)
!=
HAL_OK
)
{
Error_Handler
();
}
}
void
SystemClock_24M
(
void
)
{
RCC_OscInitTypeDef
RCC_OscInitStruct
;
RCC_ClkInitTypeDef
RCC_ClkInitStruct
;
RCC_PeriphCLKInitTypeDef
PeriphClkInit
;
/** Initializes the CPU, AHB and APB busses clocks */
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
.
PLLM
=
1
;
RCC_OscInitStruct
.
PLL
.
PLLN
=
12
;
RCC_OscInitStruct
.
PLL
.
PLLP
=
RCC_PLLP_DIV7
;
RCC_OscInitStruct
.
PLL
.
PLLQ
=
RCC_PLLQ_DIV2
;
RCC_OscInitStruct
.
PLL
.
PLLR
=
RCC_PLLR_DIV8
;
if
(
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
)
!=
HAL_OK
)
{
Error_Handler
();
}
/** Initializes the CPU, AHB and APB busses clocks */
RCC_ClkInitStruct
.
ClockType
=
RCC_CLOCKTYPE_HCLK
|
RCC_CLOCKTYPE_SYSCLK
|
RCC_CLOCKTYPE_PCLK1
|
RCC_CLOCKTYPE_PCLK2
;
RCC_ClkInitStruct
.
SYSCLKSource
=
RCC_SYSCLKSOURCE_PLLCLK
;
RCC_ClkInitStruct
.
AHBCLKDivider
=
RCC_SYSCLK_DIV1
;
RCC_ClkInitStruct
.
APB1CLKDivider
=
RCC_HCLK_DIV1
;
RCC_ClkInitStruct
.
APB2CLKDivider
=
RCC_HCLK_DIV1
;
if
(
HAL_RCC_ClockConfig
(
&
RCC_ClkInitStruct
,
FLASH_LATENCY_1
)
!=
HAL_OK
)
{
Error_Handler
();
}
PeriphClkInit
.
PeriphClockSelection
=
RCC_PERIPHCLK_USART2
;
PeriphClkInit
.
Usart2ClockSelection
=
RCC_USART2CLKSOURCE_PCLK1
;
if
(
HAL_RCCEx_PeriphCLKConfig
(
&
PeriphClkInit
)
!=
HAL_OK
)
{
Error_Handler
();
}
}
void
SystemClock_2M
(
void
)
{
RCC_ClkInitTypeDef
RCC_ClkInitStruct
=
{
0
};
RCC_OscInitTypeDef
RCC_OscInitStruct
=
{
0
};
/* MSI is enabled after System reset, update MSI to 2Mhz (RCC_MSIRANGE_5) */
RCC_OscInitStruct
.
OscillatorType
=
RCC_OSCILLATORTYPE_MSI
;
RCC_OscInitStruct
.
MSIState
=
RCC_MSI_ON
;
RCC_OscInitStruct
.
MSIClockRange
=
RCC_MSIRANGE_5
;
RCC_OscInitStruct
.
MSICalibrationValue
=
RCC_MSICALIBRATION_DEFAULT
;
RCC_OscInitStruct
.
PLL
.
PLLState
=
RCC_PLL_NONE
;
if
(
HAL_RCC_OscConfig
(
&
RCC_OscInitStruct
)
!=
HAL_OK
)
{
/* Initialization Error */
Error_Handler
();
}
/* Select MSI as system clock source and configure the HCLK, PCLK1 and PCLK2
clocks dividers */
RCC_ClkInitStruct
.
ClockType
=
RCC_CLOCKTYPE_SYSCLK
;
RCC_ClkInitStruct
.
SYSCLKSource
=
RCC_SYSCLKSOURCE_MSI
;
RCC_ClkInitStruct
.
AHBCLKDivider
=
RCC_SYSCLK_DIV1
;
RCC_ClkInitStruct
.
APB1CLKDivider
=
RCC_HCLK_DIV1
;
RCC_ClkInitStruct
.
APB2CLKDivider
=
RCC_HCLK_DIV1
;
if
(
HAL_RCC_ClockConfig
(
&
RCC_ClkInitStruct
,
FLASH_LATENCY_0
)
!=
HAL_OK
)
{
/* Initialization Error */
Error_Handler
();
}
}
/**
* @brief Configures system clock after wake-up from STOP: enable HSI, PLL
* and select PLL as system clock source.
* @param None
* @retval None
*/
void
SystemClock_ReConfig
(
uint8_t
mode
)
{
SystemClock_MSI_ON
();
switch
(
mode
)
{
case
PM_RUN_MODE_HIGH_SPEED
:
case
PM_RUN_MODE_NORMAL_SPEED
:
SystemClock_80M
();
break
;
case
PM_RUN_MODE_MEDIUM_SPEED
:
SystemClock_24M
();
break
;
case
PM_RUN_MODE_LOW_SPEED
:
SystemClock_2M
();
break
;
default:
break
;
}
// SystemClock_MSI_OFF();
}
#endif
bsp/stm32/stm32l476-st-nucleo/board/board.h
浏览文件 @
943c5ccc
...
...
@@ -33,6 +33,17 @@ extern "C" {
void
SystemClock_Config
(
void
);
#ifdef RT_USING_PM
void
SystemClock_MSI_ON
(
void
);
void
SystemClock_MSI_OFF
(
void
);
void
SystemClock_80M
(
void
);
void
SystemClock_24M
(
void
);
void
SystemClock_2M
(
void
);
void
SystemClock_ReConfig
(
uint8_t
mode
);
#endif
#ifdef __cplusplus
}
#endif
...
...
bsp/stm32/stm32l476-st-nucleo/project.uvprojx
浏览文件 @
943c5ccc
...
...
@@ -369,7 +369,7 @@
<ScatterFile>
.\board\linker_scripts\link.sct
</ScatterFile>
<IncludeLibs
/>
<IncludeLibsPath
/>
<Misc
>
--keep *.o(.rti_fn.*) --keep *.o(FSymTab)
</Misc
>
<Misc
/
>
<LinkerInputFile
/>
<DisabledWarnings
/>
</LDads>
...
...
@@ -533,9 +533,16 @@
</Files>
<Files>
<File>
<FileName>
drv_
soft_i2c
.c
</FileName>
<FileName>
drv_
pm
.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\HAL_Drivers\drv_soft_i2c.c
</FilePath>
<FilePath>
..\libraries\HAL_Drivers\drv_pm.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
drv_lptim.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\HAL_Drivers\drv_lptim.c
</FilePath>
</File>
</Files>
<Files>
...
...
@@ -588,30 +595,16 @@
<GroupName>
DeviceDrivers
</GroupName>
<Files>
<File>
<FileName>
i2c_core.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\..\..\components\drivers\i2c\i2c_core.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
i2c_dev.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\..\..\components\drivers\i2c\i2c_dev.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
i2c-bit-ops.c
</FileName>
<FileName>
pin.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\..\..\components\drivers\
i2c\i2c-bit-ops
.c
</FilePath>
<FilePath>
..\..\..\components\drivers\
misc\pin
.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
p
in
.c
</FileName>
<FileName>
p
m
.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\..\..\components\drivers\
misc\pin
.c
</FilePath>
<FilePath>
..\..\..\components\drivers\
pm\pm
.c
</FilePath>
</File>
</Files>
<Files>
...
...
@@ -875,13 +868,6 @@
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rng.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
stm32l4xx_hal_sram.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sram.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
stm32l4xx_hal_gpio.c
</FileName>
...
...
@@ -919,30 +905,23 @@
</Files>
<Files>
<File>
<FileName>
stm32l4xx_hal_i2c.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
stm32l4xx_hal_i2c_ex.c
</FileName>
<FileName>
stm32l4xx_hal_rtc.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_
i2c_ex
.c
</FilePath>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_
rtc
.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
stm32l4xx_hal_rtc.c
</FileName>
<FileName>
stm32l4xx_hal_rtc
_ex
.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rtc.c
</FilePath>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rtc
_ex
.c
</FilePath>
</File>
</Files>
<Files>
<File>
<FileName>
stm32l4xx_hal_
rtc_ex
.c
</FileName>
<FileName>
stm32l4xx_hal_
lptim
.c
</FileName>
<FileType>
1
</FileType>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_
rtc_ex
.c
</FilePath>
<FilePath>
..\libraries\STM32L4xx_HAL\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_
lptim
.c
</FilePath>
</File>
</Files>
</Group>
...
...
bsp/stm32/stm32l476-st-nucleo/rtconfig.h
浏览文件 @
943c5ccc
...
...
@@ -15,7 +15,7 @@
#define RT_USING_HOOK
#define RT_USING_IDLE_HOOK
#define RT_IDEL_HOOK_LIST_SIZE 4
#define IDLE_THREAD_STACK_SIZE
256
#define IDLE_THREAD_STACK_SIZE
1024
#define RT_DEBUG
#define RT_DEBUG_COLOR
...
...
@@ -79,7 +79,10 @@
#define RT_PIPE_BUFSZ 512
#define RT_USING_SERIAL
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_PIN
#define RT_USING_PM
#define RT_USING_RTC
/* Using WiFi */
...
...
@@ -96,6 +99,9 @@
/* Socket abstraction layer */
/* Network interface device */
/* light weight TCP/IP stack */
...
...
@@ -111,9 +117,6 @@
/* Utilities */
/* ARM CMSIS */
/* RT-Thread online packages */
/* IoT - internet of things */
...
...
@@ -151,13 +154,8 @@
/* miscellaneous packages */
/* sample package */
/* samples: kernel and components samples */
/* example package: hello */
#define SOC_FAMILY_STM32
#define SOC_SERIES_STM32L4
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录