中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-编译下载和运行第一个程序(点亮LED)
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
安装驱动(如果已经安装了不需要重复安装)
1,解压

2,根据自己的电脑选择安装32位或64位




使用电脑数据线连接开发板

将会在设备管理器中看到ASR的设备(有叹号也没关系)

如果没有出现的话那把Type-C口旋转180度再接到板子(Type-C是两用的, 正反接分别连接到4G模组和蓝牙芯片)

关于编辑程序
1,编辑程序使用文本进行编辑, 可以使用记事本等编辑器, 为了更好的编辑,推荐使用vscode
下载地址: https://code.visualstudio.com/
这边下载好了

2,一直点击next安装,只是要注意安装这里勾选上

3,如果要设置中文; 点击插件, 搜索 Chinese 然后点击安装

安装完点击右下角会提示,重启

先说一下源码; 打开SDK源码
1,解压SDK (解压注意需要是英文字符路径)


2,解压之后可以重新命名一下文件夹名字, 名字太长编译容易出问题
可以把后面的去了,只留下 ML305A_ML307A_OpenCPU


或者直接更简洁命名为SDK

3,右键选择使用Vscode打开源码文件夹

4,一些基本说明,知道就可以


编译SDK源码(custom_main 工程)
1,提示
4G模组二次开发不像51或者STM32单片机有页面操作的IDE软件, 这个开发是直接编辑文本, 然后cmd指令编译;
2,编写控制LED的程序(后面将会详细说明程序,这节主要熟悉开发流程)
用户可以把该例程里面的文件替换SDK里面的custom_main.c文件 或者 把代码复制粘贴过去. 复制过去以后记得ctrl+s 保存下;


#include "cm_sys.h" #include "cm_os.h" #include "cm_mem.h" #include "stdio.h" #include "stdlib.h" #include "stdarg.h" #include <string.h> #include "cm_gpio.h" #include "cm_iomux.h" osThreadId_t task_test_handle;//用于记录任务的句柄(ID码),可以用来停止任务 static void task_test_fun(void *param) { cm_iomux_set_pin_func(CM_IOMUX_PIN_16, CM_IOMUX_FUNC_FUNCTION1);//设置引脚复用功能; 设置16号引脚为功能1, 也就是作为GPIO0 cm_gpio_cfg_t cfg = {0}; cfg.direction = CM_GPIO_DIRECTION_OUTPUT;//输出 cfg.pull = CM_GPIO_PULL_UP;//上拉 cm_gpio_init(CM_GPIO_NUM_0, &cfg);//配置GPIO0 cm_gpio_level_e level; while (1) { cm_gpio_set_level(CM_GPIO_NUM_0, CM_GPIO_LEVEL_HIGH);//设置GPIO0输出高电平 osDelay(1000/5);//延时1S cm_gpio_get_level(CM_GPIO_NUM_0,&level);//获取电平状态 cm_log_printf(0,"cm_gpio_get_level:%d\r\n", level);//日志打印 cm_gpio_set_level(CM_GPIO_NUM_0, CM_GPIO_LEVEL_LOW);//设置GPIO0输出低电平 osDelay(1000/5);//延时1S cm_gpio_get_level(CM_GPIO_NUM_0,&level);//获取电平状态 cm_log_printf(0,"cm_gpio_get_level:%d\r\n", level);//日志打印 } } //相当于程序的main函数 int cm_opencpu_entry(char * param) { //配置任务 osThreadAttr_t task_test = {0}; task_test.name = "task_test";//任务名字-随意 task_test.stack_size = 4096 * 2;//任务使用栈大小-写这个就可以 task_test.priority = osPriorityNormal;//任务优先级-普通优先级 //返回任务句柄 任务函数 给任务函数的参数 任务配置 task_test_handle = osThreadNew((osThreadFunc_t)task_test_fun, NULL, &task_test); return 0; }
3,双击运行这个

然后清理工程 输入 ML307A_build.bat clean

然后回车运行

4,编译 custom_main 里面的工程文件

下面四个命令根据自己的开发板模组型号进行选择
ML307A_build.bat DCLN
ML307A_build.bat DSLN
ML307A_build.bat GCLN
ML307A_build.bat GSLN
输入 ML307A_build.bat DSLN 命令,然后按回车键执行

5,将会生成out文件夹, 里面有程序固件


下载程序固件
1,解压下载工具(根据电脑系统进行选择)



2,选择烧录文件

3,然后点击START

4,按一下boot按键让开发板进入下载程序模式;
这边的电路做了一键BOOT, 只需要按一下boot按键就可以; 去掉了原先繁琐的先按下boot 再复位才能进入boot下载模式的操作;

5,正在下载

下载完成

6,下载完成以后点击BACK 返回, 然后再按键复位下开发板
之所以需要点击软件back 返回上先前页面, 是因为如果在这个页面复位芯片由于数据线还在连接着, 模组复位以后, 就会重新下载;
咱需要点击软件Back 然后再按一下开发板的RST按键, 程序就正常运行了;


7,正常运行, 可以看到LED每隔1S亮灭

8,可以连接日志口看下设备打印的
设备管理器会同时出现两路USB串行设备, 一般COM比较小的是AT口, 大的是DEBUG日志口




烧录更简便的方式(这样子的话可以连续烧录一个一个的模组)
在这个下载页面, 使用数据线重新连接开发板, 这样子就会自动下载;
如果没有自动下载,那只得先一直按着BOOT按键,然后按一下RST按键, 然后松开RST按键, 看到开始下载后松开BOOT;


在这个下载页面, 把多个开发板分别连接电脑USB口,可以一次性烧录多个板子;

.
浙公网安备 33010602011771号