概述
在OpenCPU开发的例子程序中有如下的定义:
static cm_cmd_t cmd_vector[] = {
...
{
"GPIO_READ", cm_test_gpio_read},//CM:GPIO_READ:NUM:0xiomuxpin(16进制):0xiomuxfun(16进制)
{
"GPIO_WRITE", cm_test_gpio_write},//CM:GPIO_WRITE:NUM:0xiomuxpin(16进制):0xiomuxfun(16进制):value
...
可以使用串口输入:
CM:GPIO_READ:NUM:0xiomuxpin:0xiomuxfun读取GPIO的值
CM:GPIO_WRITE:NUM:0xiomuxpin:0xiomuxfun:value设置GPIO的状态值
下面把这个命令的用法讨论如下。
读写命令
要使用这些命令,需要对程序进行编译并下载。要编译例子中的demo_main程序,需要打开tool目录,再打开scons目录下面的EnvironConfig.py程序,将env['DEMO_CARRY"] ARGUMENTS.get(‘demo’, y)
env['DEMO_CARRY"] ARGUMENTS.get('demo', 'n')
#变化为:
env['DEMO_CARRY"] ARGUMENTS.get('demo', 'y')
这时,再执行scons就会编译examples\demo_main下的主程序了。
读命令
在cm_demo_main.c文件中有外部输入的命令定义如上。在串口输入:
CM:GPIO_READ:0:4C:1
串口返回:
[Rx][08:20:10.371] please input cmds:
[Rx][09:19:13.236] read gpio_0 level = 1
[Rx][09:19:13.236] read gpio_0 dir = 1
[Rx][09:19:13.266] read gpio_0 dir = 1
[Rx][09:19:13.266] read gpio_0 level = 1
[Rx][09:19:13.296] OK
用万用表测量端子,电压为3.3V。这里本来应该是1.8V,但电路已经做了1.8V-3.3V的转换。
这里要解释一下这个命令的参数的含义。在注释行里有这个命令的注释:
//CM:GPIO_READ:NUM:0xiomuxpin(16进制):0xiomuxfun(16进制)
- NUM:是GPIO的数字。比如GPIO0,这个NUM就写入0,GPIO1,这个数子是1.
- 0xiomuxpin(16进制): 应该填写16进制的数。是对用芯片的管脚的号
- 0xiomuxfun(16进制): 引脚资源,通过数字选择功能
在代码中看这个数据是怎么定义的:
void cm_test_gpio_read(unsigned char **cmd, int len)
{
cm_gpio_cfg_t cfg = {
0};
cm_gpio_level_e level = 0;
cm_gpio_num_e test_gpio = 0;
cm_iomux_pin_e pin = 0;
cm_iomux_func_e fun = 0;
cm_iomux_func_e fun1 = 0

最低0.47元/天 解锁文章
2678

被折叠的 条评论
为什么被折叠?



