硬件原理
一、这次硬件设计有
1、ds1302时钟设计
2、DHT12湿度传感器
3、DA播放音乐(程序正在设计)
4、esp01s
5、2个led彩灯
二、支持展板的程序(点击跳转相应代码)
1、点灯控制
2、lcd屏幕(参考官方啊)
3、key按键
4、esp(请先用AT指令设置ap)串口打印
因为要用到2个串口(USART0、USART1),这时候就与要独立的串口打印“usartPrintf”(不能同时重定义到printf)、在配合cjson非常丝滑,
5、dht11程序
6、ds1302程序
7、delay函数实现
请期待
>>>>>>>>>>>>>
x、u8g2
x、什么时候想好 就来(狗头保命)
三、Cjson库的使用
cjson的使用 到官网去下载cjson,或者移步下方
示例
#include "gd32f4xx.h"
#include <stdio.h>
#include "led.h"
#include "usart.h"
#include "string.h"
#include "stdlib.h"
#include "dht11.h"
#include "delay.h"
#include "cJSON.h"
void parse_led(const char *JSON)
{
cJSON *json,*led0 , *led1;
printf("data before:%s
",JSON);
json = cJSON_Parse(JSON);//解析串口的JSON数据
if(json==NULL)
{
printf("json_erro:[%s]
",cJSON_GetErrorPtr());//输出语法错误的位置
}
else
{
led0 = cJSON_GetObjectItem(json,"led1");
led1 = cJSON_GetObjectItem(json,"led2");
printf("led1=%d
",led0->valueint);
printf("led2=%d
",led1->valueint);
if(led0->valueint==1 ){led1_on();}else{led1_off();}
if(led1->valueint==1 ){led2_on();}else{led2_off();}
//memset(g_recv_buff, 0, g_recv_length); // 清空数组
}
cJSON_Delete(json); // 释放内存
}
int main(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2); // 优先级分组
LED_GPIO_Init();
Usart_gpio_Init(115200);
DHT11_Init();
printf("Interrupt receive
");
while (1)
{
if(g_recv_complete_flag==1)
{
delay_ms(10);
parse_led ((const char *)g_recv_buff );
g_recv_complete_flag=0;
}
}
}
后续有时间在肝
工程文件放在下面 本人学生一枚,诸君共勉! 同时感谢JLC的技术支持人员*v*!
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持