MC20 OpenCPU开发记录

MC20 OpenCPU开发笔记

OpenCPU软件体系结构

MC20 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进行处理,非常感谢!

上一篇 2020年7月26日
下一篇 2020年7月26日

相关推荐