MC20 OpenCPU开发笔记
OpenCPU软件体系结构

资源
32-bit ARM7EJ-STMRISC 260MHz
4MB flash
4MB RAM
串口
提供两个UART端口:MAIN UART、DEBUG UART。分别命名为UART1和UART2。
UART1是9-pin串行接口。UART2是3-wire接口,具有调试功能,可以用来调试核心系统。
GPIO
有21个I/O管脚可配置为通用I/O。
EINT
OpenCPU支持外部中断输入。有三个I/O引脚可配置为外部
中断输入。但是,EINT不能用于高频率中断检测,这
会导致模块工作不稳定。
PWM
有一个I/O引脚可配置为脉宽调制。有32K和13M时钟源
可用。
ADC
有一个可为ADC配置的模拟输入引脚。
Power Key
在OpenCPU中,应用程序可以捕捉到电源键被按下或释放的行为。然后开发人员可以重新定义按下power键的行为。
开发环境
程序框架
函数是嵌入式应用程序的入口,就像C应用程序中的一样。
是嵌入式应用从任务的消息队列接收消息的重要系统功能。
是RIL模块发送给主任务的系统消息。
是一条系统消息,指示新的URC即将到来。
数据类型
Type | Description |
---|---|
bool | 布尔变量(应为TRUE或FALSE)。 |
s8 | 8位有符 整数。 |
u8 | 8位无符 整数。 |
s16 | 16位有符 整数。 |
u16 | 16位无符 整数。 |
s32 | 32位有符 整数。 |
u32 | 32位无符 整数。 |
u64 | 64位无符 整数。 |
float | 浮点变量。 |
系统配置
在目录下,开发者可以根据自己对堆内存的要求重新配置应用程序大小、任务添加和任务堆栈大小配置,以GPIO初始化状态。开发人员的所有配置文件都以前缀“custom_u”命名。
Config File | Description |
---|---|
custom_feature_def.h | 启用OpenCPU功能。现在只包括RIL。一般不需要更改。 |
custom_gpio_cfg.h | gpio初始化状态的配置 |
custom_heap_cfg.h | 堆内存大小配置 |
custom_task_cfg.h | 多任务配置 |
custom_sys_cfg.h | 其他系统配置,包括电源键、指定外部看门狗gpio管脚,并设置调试端口的工作模式 |
任务配置
OpenCPU支持多任务处理。开发人员只需要简单地按照下面的步骤在custom_task_cfg.h文件中添加一个记录就可以定义一个新任务。OpenCPU支持一个主任务和最多十个子任务。
如果任务中有文件操作,则栈大小必须设置为至少5KB。
开发人员应避免调用以下函数:、和。这些函数将阻塞任务,从而使任务无法从消息队列中获取消息。如果消息队列已满,系统将意外地自动重新启动。
GPIO配置
OpenCPU中GPIO的配置,有两种方法可以初始化GPIO。一种是在中配置GPIO列表初始化;另一种是在应用程序启动后调用与GPIO相关的api来初始化。但前者在时间序列上要早于后者。
定制配置
所有定制项都在custom_sys_cfg.c的TLV(type-Length-Value)中配置。开发者可以通过改变值来改变程序功能。
Item | Type | Length | Default Value | Possible Value |
---|---|---|---|---|
App Enabling | 4 | |||
PWRKEY Cfg | 2 | |||
GPIO WTD Cfg | 8 | One value of Enum_PinName | ||
Working Mode for Debug Port | 4 |
PowerKey配置
外部看门狗引脚
当采用外部看门狗监控应用程序时,模块必须在模块通电的整个期间为看门狗供电,包括启动、应用程序激活和升级的过程。
Period | Feeding Host |
---|---|
Booting | Core system |
App Running | App |
Upgrading App by FOTA | Core system |
因此,开发人员需指定哪个GPIO是为外部看门狗使用的。
调试端口工作模式
串行调试端口(UART2)可以作为公共串行端口(基本模式)或特殊调试端口(高级模式)工作,可以在应用程序期间调试某些问题。
API函数
时间API
OpenCPU提供与时间相关的API,包括设置本地时间、获取本地时间、将日历时间转换为秒或将秒转换为日历时间等。
时间结构定义如下:
根据ST_Time结构体描述的时间返回UTC时间。
将UTC时间转换为本地时间;
定时器API
OpenCPU提供两种定时器。一个是”Common Timer“,一个是”Fast Timer“。OpenCPU系统允许在一个任务内同时运行最多10个Common Timer。Fast Timer仅提供一个。
电源管理API
电源管理包含与电源相关的操作,例如断电、电源键控制和低功耗启用/禁用。
-
电源开关
当PWRKEY引脚没有对地短路时,开发人员可以调用Ql_PowerDown函数关闭模块电源。当PWRKEY引脚对地短路时,此动作将重置模块。
-
睡眠模式
可以启用模块睡眠模式。当模块空闲时进入睡眠模式,定时器超时、来电、短信、GPRS数据和中断事件可将模块从睡眠模式唤醒。
函数可以在模块唤醒时禁用睡眠模式。
-
断电
? pwrDwnType:1表示正常断电
- 锁定电源
- Power Key回调函数注册
- 睡眠模式
GNSS API
打开或关闭GNSS。
参数
op:[In]接通/断开GNSS的操作。0表示关闭GNSS,1表示打开GNSS。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!