【LiteOS】13-移植-按键

此笔记由个人整理

华为IOT LiteOS开发实战营

第七天

一、控制移植

定义变量(在数据上报时使用)

uint8_t Light_state;
uint8_t Motor_state;

按键一

  • 代码
//按键1任务
void Key1_task_entry()
{
    if (Light_state == 0)
    {
        //此处灯控制开
        HAL_GPIO_WritePin(IA1_Light_GPIO_Port, IA1_Light_Pin, GPIO_PIN_SET);
        POINT_COLOR = GREEN;
        LCD_ShowString(175, 198, 210, 32, 32, "ON ");
        Light_state = 1;
    }
    else
    {
        //此处灯控制关
        HAL_GPIO_WritePin(IA1_Light_GPIO_Port, IA1_Light_Pin, GPIO_PIN_RESET);
        POINT_COLOR = RED;
        LCD_ShowString(175, 198, 210, 32, 32, "OFF");
        Light_state = 0;
    }
    __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_2);
}

按键二

  • 代码
//按键2任务:
void Key2_task_entry()
{
    if (Motor_state == 0)
    {
        //此处电机控制开
        HAL_GPIO_WritePin(IA1_Motor_GPIO_Port, IA1_Motor_Pin, GPIO_PIN_SET);
        POINT_COLOR = GREEN;
        LCD_ShowString(83, 198, 210, 32, 32, "ON ");
        Motor_state = 1;
    }
    else
    {
        //此处电机控制关
        HAL_GPIO_WritePin(IA1_Motor_GPIO_Port, IA1_Motor_Pin, GPIO_PIN_RESET);
        POINT_COLOR = RED;
        LCD_ShowString(83, 198, 210, 32, 32, "OFF");
        Motor_state = 0;
    }
    __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_3);
}

主函数

  • 创建中断
osal_int_connect(KEY1_EXTI_IRQn, 2,0,Key1_task_entry,NULL);
osal_int_connect(KEY2_EXTI_IRQn, 3,0,Key2_task_entry,NULL);

二、数据上报

  • 在数据上报结构体中添加之前定义的变量
typedef struct
{
    int8_t messageId;
    int8_t Temperature;
    int8_t Humidity;
    uint16_t Luminance;
    uint8_t Light_state;
    uint8_t Motor_state;
} AG_sensor_report;
  • 数据上报任务中,在死循环中添加新增的结构体变量
static int app_report_task_entry()
{
    int ret = -1;

    oc_config_param_t oc_param;
    AG_sensor_report Agriculture;

    (void)memset(&oc_param, 0, sizeof(oc_param));

    oc_param.app_server.address = cn_app_server;
    oc_param.app_server.port = cn_app_port;
    oc_param.app_server.ep_id = cn_endpoint_id;
    oc_param.boot_mode = en_oc_boot_strap_mode_factory;
    oc_param.rcv_func = app_msg_deal;

    ret = oc_lwm2m_config(&oc_param);
    if (0 != ret)
    {
        return ret;
    }

    //install a dealer for the led message received
    while (1) //--TODO ,you could add your own code here
    {
        Agriculture.messageId = cn_AG_sensorID;
        Agriculture.Temperature = (int8_t)E53_IA1_Data.Temperature;
        Agriculture.Humidity = (int8_t)E53_IA1_Data.Humidity;
        Agriculture.Luminance = htons((uint16_t)E53_IA1_Data.Lux);
        Agriculture.Light_state = (int8_t)Light_state;
        Agriculture.Motor_state = (int8_t)Motor_state;
        oc_lwm2m_report((char *)&Agriculture, sizeof(Agriculture), 1000);
        osal_task_sleep(2 * 1000);
    }
    return ret;
}
  • 在数据解析任务中添加变量
if (Agriculture_Control_Light->Light[0] == 'O' && Agriculture_Control_Light->Light[1] == 'N')
                {
                    HAL_GPIO_WritePin(IA1_Light_GPIO_Port, IA1_Light_Pin, GPIO_PIN_SET);
                    LCD_ShowString(175, 198, 210, 32, 32, "ON ");
                    Light_state=1;//变量置1
                }
                if (Agriculture_Control_Light->Light[0] == 'O' && Agriculture_Control_Light->Light[1] == 'F' && Agriculture_Control_Light->Light[2] == 'F')
                {
                    HAL_GPIO_WritePin(IA1_Light_GPIO_Port, IA1_Light_Pin, GPIO_PIN_RESET);
                    LCD_ShowString(175, 198, 210, 32, 32, "OFF");
                    Light_state=0;//变量置0
                }    
if (Agriculture_Control_Motor->Motor[0] == 'O' && Agriculture_Control_Motor->Motor[1] == 'N')
                {
                    HAL_GPIO_WritePin(IA1_Motor_GPIO_Port, IA1_Motor_Pin, GPIO_PIN_SET);
                    LCD_ShowString(83, 198, 210, 32, 32, "ON ");
                    Motor_state=1;//变量置1
                }
                if (Agriculture_Control_Motor->Motor[0] == 'O' && Agriculture_Control_Motor->Motor[1] == 'F' && Agriculture_Control_Motor->Motor[2] == 'F')
                {
                    HAL_GPIO_WritePin(IA1_Motor_GPIO_Port, IA1_Motor_Pin, GPIO_PIN_RESET);
                    LCD_ShowString(83, 198, 210, 32, 32, "OFF");
                    Motor_state=0;//变量置0
                }
  • 然后在华为云平台中agriculture服务依次添加Light_state,Motor_state(可读可写可执行)
  • 在编解码插件中添加数据,与其相对应
  • 完成数据上报,实现项目的闭环设计
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值