100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【开放原子训练营(第二季)RT-Thread Nano学习营 北京站】RTT入门实操

【开放原子训练营(第二季)RT-Thread Nano学习营 北京站】RTT入门实操

时间:2021-04-26 14:49:08

相关推荐

【开放原子训练营(第二季)RT-Thread Nano学习营 北京站】RTT入门实操

目录

线下集结

新建RTT项目

基于芯片新建工程

运行RTT程序

在线仿真问题

几个基于芯片生产程序实例

LED灯闪烁

按键

morse(摩斯密码)

总结和感受

线下集结

本人有幸参与了本次训练营的线下学习,线下学习的氛围让我充分感受到了学习的乐趣。和其他同学一起学习交流,大家之前的项目经验和遇到的问题都能够现场解答和讨论,这种现场的氛围不存在线上学习。特别是项目实操环节,能够现场观摩学习其他人的开发环境和编程习惯,这一点对我来说收获很大。

线下的学习过程过于,以下是针对这次的线下复习

新建RTT项目

因手里没有现场的STM32F411的开发板,手里有套野火霸道STM32F103ZE的开发板,后续内容基于此开发板完成。

如何搭建环境,参考本次培训的官方文档:

/joyce/train-note

我这里多安装了STM32F1的包:

基于芯片新建工程

因没有相应的开发板支持包,新建项目基于芯片:

注意这里新建之后,芯片时钟都是以内部晶振为基准,如果要修改也比较简单,找到drivers下的board.h修改即可,如我板载是8MHz晶振,F103最大支持72Mhz内核频率,配置如下:

#define BSP_CLOCK_SOURCE ("HSE")#define BSP_CLOCK_SOURCE_FREQ_MHZ ((int32_t)8)#define BSP_CLOCK_SYSTEM_FREQ_MHZ ((int32_t)72)

运行RTT程序

配置完后点击下载,链接串口,可打开终端:

在线仿真问题

如果需要在线用ST-LINK仿真,遇到不能进入仿真的报错,则可以用以下程序将ST-LINK固件进行升级:

几个基于芯片生产程序实例

LED灯闪烁

LED硬件原理图如下:

修改main.c内程序如下:

#define DBG_TAG "main"#define DBG_LVL DBG_LOG#include <rtdbg.h>#include <rtdevice.h>#include <drivers\pin.h>#include <drivers\include\drv_common.h>#define LED_PIN GET_PIN(F,7)int main(void){int count = 1;rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);while (count++){LOG_D("Hello RT-Thread!");rt_pin_write(LED_PIN, 0);rt_thread_mdelay(1000);rt_pin_write(LED_PIN, 1);rt_thread_mdelay(1000);}return RT_EOK;}

按键

按键原理图如下:

在applition里新建key.c

#include <rtthread.h>#include <rtdevice.h>#include <drivers\pin.h>#include <drivers\include\drv_common.h>#define KEY_PIN GET_PIN(A,0)#define LED2_PIN GET_PIN(F,8)int key_irq_count = 0;void key_irq(){//按下触发,控制LED2亮灭key_irq_count++;rt_pin_write(LED2_PIN, key_irq_count&0x01);}int key(){rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);rt_pin_mode(KEY_PIN, PIN_MODE_INPUT_PULLDOWN);rt_pin_write(LED2_PIN, PIN_LOW);//注册中断rt_pin_attach_irq(KEY_PIN, PIN_IRQ_MODE_RISING, key_irq, RT_NULL);//使能中断rt_pin_irq_enable(KEY_PIN, PIN_IRQ_ENABLE);return 1;}/*注册自动初始化key*/INIT_BOARD_EXPORT(key);

注意最后的初始化,不像以前的裸板驱动,这里更加模块化,自动初始化机制的几个API介绍:

想要更详细了解机制,可以戳链接,跳转官方文档。

morse(摩斯密码)

使用rtt较为方便的一点是可以方便的添加其他人写好的模块:

1、添加软件包

2、配置

3、保存并进行适配性的修改

//修改按键IO口#define USER_KEY GET_PIN(C, 13) // GET_PIN(H,4)void irq_callback(){morse_input(!rt_pin_read(USER_KEY));// rt_kprintf("key_irq\r\n");}int morse_key_example(void){rt_pin_mode(USER_KEY, PIN_MODE_INPUT_PULLDOWN);rt_pin_attach_irq(USER_KEY, PIN_IRQ_MODE_RISING_FALLING, irq_callback, RT_NULL);rt_pin_irq_enable(USER_KEY, PIN_IRQ_ENABLE);//增加输出,查看示例是否已调用rt_kprintf("key_example\r\n");return 0;}

4、编译下载运行

5、结果

初始化运行结果:

按照相应的摩斯密码来点击按键输出字符到终端(morse相关说明GitHub - zhkag/morse: morse):

总结和感受

RTT的RT-Thread Studio 一战式的IDE给我极大的震撼,与我之前长期使用Free-RTos对比起来看,RTT的生态真的是太强大了,以本次为契机,后续项目上会优先考虑RTT,真的能节省时间和精力。真诚感谢主办方!下次有机会再相聚!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。