Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yunke120
rt-thread
提交
e8eaaed1
R
rt-thread
项目概览
yunke120
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e8eaaed1
编写于
9月 20, 2017
作者:
L
lin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Modified fomat and add low power
上级
02669678
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
170 addition
and
55 deletion
+170
-55
bsp/apollo2/README.md
bsp/apollo2/README.md
+43
-3
bsp/apollo2/apollo2 evaluation board skt.jpg
bsp/apollo2/apollo2 evaluation board skt.jpg
+0
-0
bsp/apollo2/applications/SConscript
bsp/apollo2/applications/SConscript
+2
-2
bsp/apollo2/applications/main.c
bsp/apollo2/applications/main.c
+2
-2
bsp/apollo2/board/Sconscript
bsp/apollo2/board/Sconscript
+2
-2
bsp/apollo2/board/board.c
bsp/apollo2/board/board.c
+73
-38
bsp/apollo2/board/board.h
bsp/apollo2/board/board.h
+31
-2
bsp/apollo2/board/led.c
bsp/apollo2/board/led.c
+7
-2
bsp/apollo2/rtconfig.h
bsp/apollo2/rtconfig.h
+10
-4
未找到文件。
bsp/apollo2/README.md
浏览文件 @
e8eaaed1
Apollo2 MCU是基于Ambiq Micro的Apollo MCU产品系列的第二代控制器。
Ambiq使用专利亚阈值功率优化技术(Subthreshold Power Optimized Technology, SPOT)平台来实现惊人的功耗降低,其功耗通常比性能相近的其它MCU产品降低5至10倍。
Apollo2 MCU采用32位ARM Cortex-M4F微控制器,集成了高达1 MB的闪存和256 KB的RAM,以适应无线电和传感器开销,同时仍留有足够的应用代码空间。
Ambiq使用专利亚阈值功率优化技术(Subthreshold Power Optimized Technology, SPOT)平台来实现惊人的功耗降低,其功耗通常比性能相近的其它MCU产品降低5至10倍。
Apollo2 MCU采用32位ARM Cortex-M4F微控制器,集成了高达1 MB的闪存和256 KB的RAM,以适应无线电和传感器开销,同时仍留有足够的应用代码空间。
该微控制器还包括串行主机和UART端口,用于与无线电和传感器通信,包括加速度计,陀螺仪和磁力计。
board info:Apollo2 Evaluation Board(http://ambiqmicro.com/apollo-ultra-low-power-mcu/apollo2-mcu-20170703/)
\ No newline at end of file
Features
Ultra-low supply current
10 μA/MHz executing from flash at 3.3 V
10 μA/MHz executing from RAM at 3.3 V
High-performance ARM Cortex-M4 Processor
Up to 48 MHz clock frequency
Floating point unit
Memory protection unit
Wake-up interrupt controller with 32 interrupts
Ultra-low power memory:
Up to 1 MB of flash memory for code/data
Up to 256 KB of low leakage RAM for code/data
16kB 1 or 2-way Associative Cache
Ultra-low power interface for off-chip sensors:
14 bit, 15-channel, up to 1.2 MS/s ADC
Voltage Comparator
Temperature sensor with +/-2C accuracy
Flexible serial peripherals:
6x I2C/SPI master for communication with sensors,?radios, and other peripherals
1x I2C/SPI slave for host communications
2x UART for communication with peripherals and?legacy devices
PDM for mono and stereo audio microphone
Rich set of clock sources:
32.
768 kHz XTAL oscillator
Low frequency RC oscillator – 1.024 kHz
High frequency RC oscillator – 48 MHz
RTC based on Ambiq’s AM08X5/18X5 families
Wide operating range: 1.8-3.6 V, –40 to 85°C
Compact package options:
2.
5 x 2.5 mm 49-pin CSP with 34 GPIO
4.
5 x 4.5 mm 64-pin BGA with 50 GPIO
Board info
Apollo2 Evaluation Board(http://ambiqmicro.com/apollo-ultra-low-power-mcu/apollo2-mcu-20170703/)
\ No newline at end of file
bsp/apollo2/apollo2 evaluation board skt.jpg
0 → 100644
浏览文件 @
e8eaaed1
291.0 KB
bsp/apollo2/applications/SConscript
浏览文件 @
e8eaaed1
...
...
@@ -2,8 +2,8 @@ Import('RTT_ROOT')
Import
(
'rtconfig'
)
from
building
import
*
cwd
=
os
.
path
.
join
(
str
(
Dir
(
'#'
)),
'applications'
)
src
=
Glob
(
'*.c'
)
cwd
=
os
.
path
.
join
(
str
(
Dir
(
'#'
)),
'applications'
)
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
,
str
(
Dir
(
'#'
))]
group
=
DefineGroup
(
'Applications'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
)
...
...
bsp/apollo2/applications/main.c
浏览文件 @
e8eaaed1
/*
* File :
applicatio
n.c
* File :
mai
n.c
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
*
...
...
@@ -23,7 +23,7 @@
*/
#include <rtthread.h>
#include <stdint.h>
#ifdef RT_USING_FINSH
#include <finsh.h>
#include <shell.h>
...
...
bsp/apollo2/board/Sconscript
浏览文件 @
e8eaaed1
...
...
@@ -2,8 +2,8 @@ Import('RTT_ROOT')
Import
(
'rtconfig'
)
from
building
import
*
cwd
=
GetCurrentDir
()
src
=
Glob
(
'*.c'
)
cwd
=
GetCurrentDir
()
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
]
#remove other no use files
...
...
bsp/apollo2/board/board.c
浏览文件 @
e8eaaed1
/*
* File : board.c
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 200
9 RT-Thread Develop
Team
* COPYRIGHT (C) 200
6 - 2017, RT-Thread Development
Team
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Change Logs:
* Date Author Notes
...
...
@@ -19,11 +29,23 @@
#include "am_mcu_apollo.h"
#include "hal/am_hal_clkgen.h"
#include "hal/am_hal_cachectrl.h"
#include "hw_uart.h"
#include "uart.h"
#include "led.h"
#ifdef __CC_ARM
extern
int
Image
$$
RW_IRAM1
$$
ZI
$$
Limit
;
#define AM_SRAM_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit)
#elif __ICCARM__
#pragma section="HEAP"
#define AM_SRAM_BEGIN (__segment_end("HEAP"))
#else
extern
int
__bss_end
;
#define NRF_SRAM_BEGIN (&__bss_end)
#endif
#define TICK_RATE_HZ RT_TICK_PER_SECOND
#define SYSTICK_CLOCK_HZ ( 32768UL )
#define WAKE_INTERVAL ( (uint32_t) ((SYSTICK_CLOCK_HZ / TICK_RATE_HZ))
)
#define WAKE_INTERVAL ( (uint32_t) ((SYSTICK_CLOCK_HZ / TICK_RATE_HZ)))
/**
* This is the timer interrupt service routine.
...
...
@@ -34,16 +56,16 @@ void am_stimer_cmpr0_isr(void)
/* Check the timer interrupt status */
am_hal_stimer_int_clear
(
AM_HAL_STIMER_INT_COMPAREA
);
am_hal_stimer_compare_delta_set
(
0
,
WAKE_INTERVAL
);
if
(
rt_thread_self
()
!=
RT_NULL
)
{
/* enter interrupt */
rt_interrupt_enter
();
/* enter interrupt */
rt_interrupt_enter
();
rt_tick_increase
();
rt_tick_increase
();
/* leave interrupt */
rt_interrupt_leave
();
/* leave interrupt */
rt_interrupt_leave
();
}
}
...
...
@@ -53,13 +75,10 @@ void am_stimer_cmpr0_isr(void)
*/
void
SysTick_Configuration
(
void
)
{
/* Set the main clk */
am_hal_clkgen_sysclk_select
(
AM_HAL_CLKGEN_SYSCLK_MAX
);
/* Enable compare A interrupt in STIMER */
am_hal_stimer_int_enable
(
AM_HAL_STIMER_INT_COMPAREA
);
/* Enable the timer interrupt in the NVIC */
/* Enable the timer interrupt in the NVIC
, making sure to use the appropriate priority level
*/
am_hal_interrupt_enable
(
AM_HAL_INTERRUPT_STIMER_CMPR0
);
/* Configure the STIMER and run */
...
...
@@ -69,15 +88,6 @@ void SysTick_Configuration(void)
AM_HAL_STIMER_CFG_COMPARE_A_ENABLE
);
}
/**
* This is the CacheCtrl Enable.
*
*/
void
CacheCtrl_Enable
(
void
)
{
am_hal_cachectrl_enable
(
&
am_hal_cachectrl_defaults
);
}
/**
* This is the low power operation.
* This function enables several power-saving features of the MCU, and
...
...
@@ -100,7 +110,7 @@ void am_low_power_init(void)
/* Stop the XT and LFRC */
am_hal_clkgen_osc_stop
(
AM_HAL_CLKGEN_OSC_XT
);
//
am_hal_clkgen_osc_stop(AM_HAL_CLKGEN_OSC_LFRC);
am_hal_clkgen_osc_stop
(
AM_HAL_CLKGEN_OSC_LFRC
);
/* Disable the RTC */
am_hal_rtc_osc_disable
();
...
...
@@ -112,7 +122,11 @@ void am_low_power_init(void)
*/
void
deep_power_save
(
void
)
{
am_hal_sysctrl_sleep
(
AM_HAL_SYSCTRL_SLEEP_DEEP
);
am_hal_interrupt_master_disable
();
am_hal_sysctrl_sleep
(
AM_HAL_SYSCTRL_SLEEP_DEEP
);
am_hal_interrupt_master_enable
();
}
/**
...
...
@@ -120,27 +134,48 @@ void deep_power_save(void)
*/
void
rt_hw_board_init
(
void
)
{
/* Set the clock
frequency */
SysTick_Configuration
(
);
/* Set the default cache configuration */
CacheCtrl_Enable
(
);
/* Set the system clock to maximum
frequency */
am_hal_clkgen_sysclk_select
(
AM_HAL_CLKGEN_SYSCLK_MAX
);
/* Set the default cache configuration */
am_hal_cachectrl_enable
(
&
am_hal_cachectrl_defaults
);
/* Configure the board for low power operation */
//am_low_power_init();
#ifdef RT_USING_IDLE_HOOK
rt_thread_idle_sethook
(
deep_power_save
);
am_low_power_init
();
/* Config SysTick */
SysTick_Configuration
();
#ifdef RT_USING_IDLE_HOOK
/* Set sleep deep mode */
rt_thread_idle_sethook
(
deep_power_save
);
#ifndef NO_FPU
/* Enable the floating point module, and configure the core for lazy stacking */
am_hal_sysctrl_fpu_enable
();
am_hal_sysctrl_fpu_stacking_enable
(
true
);
#else
am_hal_sysctrl_fpu_disable
();
#endif
/* Turn off unused Flash & SRAM */
am_hal_pwrctrl_memory_enable
(
AM_HAL_PWRCTRL_MEMEN_FLASH512K
);
am_hal_pwrctrl_memory_enable
(
AM_HAL_PWRCTRL_MEMEN_SRAM32K
);
#endif
#ifdef RT_USING_CONSOLE
rt_hw_uart_init
();
rt_hw_uart_init
();
rt_console_set_device
(
RT_CONSOLE_DEVICE_NAME
);
#endif
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init
();
#endif
#ifdef RT_USING_HEAP
rt_system_heap_init
((
void
*
)
AM_SRAM_BEGIN
,
(
void
*
)
AM_SRAM_END
);
#endif
}
/*@}*/
bsp/apollo2/board/board.h
浏览文件 @
e8eaaed1
/*
* File : board.h
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Change Logs:
* Date Author Notes
* 2017-09-14 Haley first implementation
*/
#ifndef __BOARD_H_
#define __BOARD_H_
#include <rtthread.h>
// <o> Internal SRAM memory size[Kbytes] <8-256>
//
<i>Default: 256
//
<i>Default: 256
#define AM_SRAM_SIZE 256
#define AM_SRAM_END (0x10000000 + AM_SRAM_SIZE * 1024)
/* USART driver select. */
#define RT_USING_UART0
#define RT_USING_UART1
//#define RT_USING_UART1
/* LED driver select. */
#define RT_USING_LED0
//#define RT_USING_LED1
//#define RT_USING_LED2
//#define RT_USING_LED3
void
rt_hw_board_init
(
void
);
...
...
bsp/apollo2/board/led.c
浏览文件 @
e8eaaed1
...
...
@@ -43,6 +43,7 @@
*/
void
rt_hw_led_on
(
rt_uint8_t
LEDNum
)
{
#ifdef RT_USING_PIN
if
(
LEDNum
==
0
)
rt_pin_write
(
AM_GPIO_LED0
,
PIN_LOW
);
...
...
@@ -54,6 +55,7 @@ void rt_hw_led_on(rt_uint8_t LEDNum)
else
if
(
LEDNum
==
3
)
rt_pin_write
(
AM_GPIO_LED3
,
PIN_LOW
);
#endif
}
/**
...
...
@@ -67,6 +69,7 @@ void rt_hw_led_on(rt_uint8_t LEDNum)
*/
void
rt_hw_led_off
(
rt_uint8_t
LEDNum
)
{
#ifdef RT_USING_PIN
if
(
LEDNum
==
0
)
rt_pin_write
(
AM_GPIO_LED0
,
PIN_HIGH
);
...
...
@@ -78,6 +81,7 @@ void rt_hw_led_off(rt_uint8_t LEDNum)
else
if
(
LEDNum
==
3
)
rt_pin_write
(
AM_GPIO_LED3
,
PIN_HIGH
);
#endif
}
/**
...
...
@@ -91,6 +95,7 @@ void rt_hw_led_off(rt_uint8_t LEDNum)
*/
int
rt_hw_led_init
(
void
)
{
#ifdef RT_USING_PIN
#if defined(RT_USING_LED0)
/* config led */
rt_pin_mode
(
AM_GPIO_LED0
,
PIN_MODE_OUTPUT
);
...
...
@@ -122,10 +127,10 @@ int rt_hw_led_init(void)
/* turns off the led */
rt_hw_led_off
(
3
);
#endif
/* RT_USING_LED1 */
#endif
return
0
;
}
#ifdef RT_USING_
PIN
#ifdef RT_USING_
COMPONENTS_INIT
INIT_BOARD_EXPORT
(
rt_hw_led_init
);
#endif
...
...
bsp/apollo2/rtconfig.h
浏览文件 @
e8eaaed1
...
...
@@ -16,14 +16,14 @@
/* SECTION: RT_DEBUG */
/* Thread Debug */
#define RT_DEBUG
//
#define RT_DEBUG
//#define RT_DEBUG_INIT 1
#define RT_USING_OVERFLOW_CHECK
//
#define RT_USING_OVERFLOW_CHECK
/* Using Hook */
//#define RT_USING_HOOK
//
#define RT_USING_IDLE_HOOK
#define RT_USING_IDLE_HOOK
#define IDLE_THREAD_STACK_SIZE 384
...
...
@@ -60,6 +60,9 @@
#define RT_USING_SMALL_MEM
#define RT_USING_TINY_SIZE
/* Using USER MAIN */
#define RT_USING_USER_MAIN
// <bool name="RT_USING_COMPONENTS_INIT" description="Using RT-Thread components initialization" default="true" />
#define RT_USING_COMPONENTS_INIT
...
...
@@ -78,13 +81,16 @@
// <string name="RT_CONSOLE_DEVICE_NAME" description="The device name for console" default="uart1" />
#define RT_CONSOLE_DEVICE_NAME "uart0"
/* Using GPIO pin framework */
#define RT_USING_PIN
// #define RT_USING_SPI
/* SECTION: finsh, a C-Express shell */
#define RT_USING_FINSH
/* configure finsh parameters */
#define FINSH_THREAD_PRIORITY 6
#define FINSH_THREAD_STACK_SIZE
512
#define FINSH_THREAD_STACK_SIZE
1024
#define FINSH_HISTORY_LINES 1
/* Using symbol table */
#define FINSH_USING_SYMTAB
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录