收藏官网首页
查看: 9391|回复: 1

MT7681对接机智云-环境搭建与程序烧写

51

主题

99

帖子

827

积分

高级会员

Rank: 4

积分
827
发表于 2015-10-8 11:47:23 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
本帖最后由 Snail 于 2015-10-8 11:50 编辑

第一部分:环境搭建
环境搭建除本身自带文档《MT7681环境搭建指南.pdf》《MT7681开发简明手册.pdf》上的内容以外需要注意安装路径:
TOOLCHAINS的路径需要改成自己安装cygwin的路径:
1.png
否则编译时会提示/cygdrive/c/Andestech/BSPv310/toolchains/nds32le-elf-newlib-v2j/bin/nds32le-elf-gcc:No such file or directory
第二部分:程序烧写
接线方面,开发板的rx接usb端的tx口,开发板tx接usb的rx口,开发板的rx口需在系统启动后接上,否则系统不会启动
AT#Reboot命令不能使用:
1、 rx口是否已经在系统启动后接上
2、 确认rx口接上后可能由于系统指令集未启动
解决方案:
1、 接rx口
2、 重新插拔电源,快速接通rx口,在系统处于如图状态时使用命令AT#UpdateFW,若已经启动系统,请重复2过程
2.png
3、 编写程序过程中优先启动指令集,将此部分放置于死循环之前:
3.png
第三部分:硬件分析
硬件部分应参考《Linklt_Connect_7681_Pin_Out_Diagram_v1_0.pdf》《MT7681_Data_Sheet_v0_0.pdf》
第四部分:程序编写
参考到的API文档《MediaTek_LinkIt_Connect_7681_API_Reference_v1_0.pdf》
GPIO口应用-点灯实验:
IoT_gpio_batch_modify_mode(0x04);//00100设置输入输出状态就可以
IoT_gpio_output(2,1);//GPIO2输出高电平
IoT_gpio_batch_modify_mode内数值参考表格:
4.png
读取mt7681上GPIO4的状态:
在需要读取的程序代码行插入以下函数:
UINT8gpio4_status, out_in;//定义下面函数需要的变量
IoT_gpio_batch_modify_mode(0);//00000全部输入状态
IoT_gpio_read(4,&gpio4_status, &out_in);//读取GPIO4上的电平和输入输出状态
if(gpio4_status==1)//如果读到的是高电平则输入为1
{
Printf_High("input=1\n");
}
else
{
Printf_High("input=0\n");
}
注意事项:最好在程序一开始就将GPIO设置为输入状态,需要读取的时候再调用此函数一次,判断gpio4_status的状态。
二,定时器使用
手册上写明有timer0和timer1定时器,但是在v1.2中只有timer0;可能在后续版本中会提供timer1功能。定时器初始化中后三个参数具体意义不确定。
对定时器进行初始化:
cnmTimerInitTimer(&IoTCustTimer.custTimer0, CustTimer0TimeoutAction,0, 0);//Initializes a timer
启动定时器:cnmTimerStartTimer(&IoTCustTimer.custTimer0,3000);//第二个参数为时间(单位:ms)
停止定时器:cnmTimerStopTimer(&IoTCustTimer.custTimer0);
使用定时器需要将定时内容写入CustTimer0TimeoutAction函数内:
VOID CustTimer0TimeoutAction(UINT_32 param, UINT_32 param2)
{
#if(UARTRX_TO_AIR_AUTO == 1)
    IoT_Cust_uart2wifi_change_mode_handler();
#endif
    static uint16 T1=0;
    IoT_gpio_batch_modify_mode(0x01);
    Printf_High("CustTimer1TimeoutAction: [%d]processing...\n", T1++);
    if (T1 < 3) {
        if(0==T1)
        {IoT_gpio_output(0,0);
         Printf_High("input=1\n\n");
        }
        else if(1==T1)
        {   IoT_gpio_output(0,1);
            Printf_High("input=1\n\n");
        }
        else
        {   IoT_gpio_output(0,0);
            Printf_High("input=1\n\n");
            T1=0;
        }
    Printf_High("CustTimer1 Start, will timeout after3 second...\n");
    cnmTimerStartTimer (&IoTCustTimer.custTimer0, 3000);
    } else {Printf_High("CustTimer1 Stop\n");
    cnmTimerStopTimer (&IoTCustTimer.custTimer0);
    }//cnmTimerStartTimer (&IoTCustTimer.custTimer0, 100)}

0

主题

22

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2015-12-20 19:01:00 | 显示全部楼层
看不出来是什么东西的的~~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表