【国民技术N32项目移植】1.天气显示及预报系统之项目创建
本次项目申请的是N32G45XVL-STB V1开发板,下面简单做一些介绍,并记录自己的项目历程!
1、开箱:
** 拿到开发板后有些惊艳,无论是做工还是搭载的芯片,都出乎我的意料。到手之前就已经下载好了官方提供的资料,不得不说资料也很全面!包含了产品简介、数据手册、勘误手册等等,应有具有。**
![board](https://s2.loli.net/2023/02/20/XFdVvHtfKe8yucz.png)
![123123](https://s2.loli.net/2023/02/20/tvCAqnOaEZUi4Jc.jpg)
![image-20230220090748219](https://s2.loli.net/2023/02/20/jqvFLHQBoOWDrpe.png)
2、项目创建
话不多说,直接进入项目的创建,本次使用的操作系统是RTT,开发工具是RT-Studio,之前对RT-Studio接触比较少,通过此次项目加深了了解并学习到很多!
![image-20230220094817109](https://s2.loli.net/2023/02/20/dpVkxJbZrl5X28v.png)
**创建工程后,输入项目的工程名,注意路径不能有空格以及特殊字符然后选择开发板类型、以及RTT的版本号,最后是下载器的接口。开发板自带的是DAP-Link,将自带的线插入J4端口即可识别下载。
3、LED点亮+按键测试
开发板自带了三个LED灯以及三个按键资源,就先来驱动LED和按键做测试。
![image-20230220100258158](https://s2.loli.net/2023/02/20/MDoJFewla2bskx7.png)
![image-20230220100307097](https://s2.loli.net/2023/02/20/EdKZuq6TnoLBD2k.png)
需要注意的是,其中LED2与JTAG的下载口冲突,所以需要将引脚复用,载程序开头加入下面两句程序即可正常控制LED。
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO, ENABLE);
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE, ENABLE);
下面给出LED和按键的控制程序:
void ledInit(void){
rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT);
}
static void keyThreadEntry(void){
rt_err_t mqRet = RT_EOK;
uint8_t r_queue;
rt_uint32_t event_recved;
key_mq = rt_mq_create("key_mq",
1,
128,
RT_IPC_FLAG_FIFO
);
if(key_mq != RT_NULL){
rt_kprintf("\r\nkey_mq create success!\r\n ");
}
while(1){
rt_event_recv(timer_event,
KEY_EVENT,
RT_EVENT_FLAG_AND|RT_EVENT_FLAG_CLEAR,
RT_WAITING_FOREVER,
&event_recved);
if(event_recved == KEY_EVENT){
keyProj();
}
mqRet = rt_mq_recv(key_mq,
&r_queue,
sizeof(r_queue),
RT_WAITING_NO
);
if(RT_EOK == mqRet )
{
switch(r_queue)
{
case KEY1_DOWN:{
rt_kprintf("\r\nReceive message:KEY1 Down\r\n");
ledToggle(LED1_PIN);
break;
}
case KEY1_UP:{
rt_pin_write(GET_PIN(A, 8), PIN_LOW);
rt_kprintf("\r\nReceive message:KEY1 Up\r\n");
ledToggle(LED1_PIN);
break;
}
case KEY1_LONG:rt_kprintf("\r\nReceive message:KEY1 LongPressed Down\r\n");break;
case KEY2_DOWN:{
rt_kprintf("Receive message:KEY2 Down\n\n");
ledToggle(LED3_PIN);
break;
}
case KEY2_UP:{
ledToggle(LED3_PIN);
rt_kprintf("Receive message:KEY2 Up\n\n");
break;
}
case KEY2_LONG:rt_kprintf("Receive message:KEY2 LongPressed Down\n\n");break;
case KEY3_DOWN:{
rt_pin_write(GET_PIN(A, 8), PIN_HIGH);
rt_kprintf("Receive message:KEY3 Down\n\n");
break;
}
case KEY3_UP:{
rt_pin_write(GET_PIN(A, 8), PIN_LOW);
rt_kprintf("Receive message:KEY3 Up\n\n");
break;
}
case KEY3_LONG:rt_kprintf("Receive message:KEY3 LongPressed Down\n\n");break;
default: rt_kprintf("No button Message!\r\n");break;
}
}
rt_thread_mdelay(20);
}
}
初始化过LED和按键后,通过按键按下控制LED的反转,并且可以通过串口打印出按键按下的信息。
图片:
三个按键按下,分别打印对应的信息。
![image-20230220190826070](https://s2.loli.net/2023/02/20/iISz2bPkGQBOjZX.png)
控制LED闪烁的图片
![LED](https://s2.loli.net/2023/02/20/tmwxyVTJbXvZ5LO.gif)
4、问题总结
开发板使用过程中出现了一个问题,就是下载过程中RT-Studio无法识别,报错如下:
Target type 'unknown' not recognized. Use 'pyocd list --targets' to see currently available target types. See <https://github.com/mbedmicro/pyOCD/blob/master/docs/target_support.md> for how to install additional target support.
原因分析:识别不到可能是芯片被锁死。
解决方案:使用国民技术自带的下载工具,使用串口下载,然后将boot0拉高,选择擦除FLASH,下载一个程序后,然后即可识别。