#申请原创# 1 在完成bsp移植,以及开发环境创建之后,本帖使用menuconfig配置一个rtthread工程,就是哪个朴实无华,用来控制GPIO的点灯项目。
2 首先需要介绍一下menuconfig命令,这个是一个辅助UI配置界面,在很多系统配置的工具开发中比较常见,如linux ycoto的配置开发。对应rtthread也使用menuconfig配置有关参数,其实都写入工程目录下的.config文件,这个文件很长,定义的事项很多,在scons的过程中需要引入配置和编译工程。
进入工程目录,输入menuconfig,
可以显示如下界面
首先配置内核,主要是线程和cpu架构有关
然后是rtthread的堆栈深度等参数
外部设备驱动包的下载,这个是联网的,可以下载多种包,从外设,到系统工具,ai工具等,可以自由选择,选择后就自动下载到工程。本项目的gpio点灯用不了那么高级的东东,所以就先不选了。
本项目最重要的就是选择芯片的硬件配置,一定要选中GPIO和uart
然后退出,选择保存或者不保存。
随后就是系统写入和配置,写入.config文件。
3 配置完成后,创建如下main.c文件
- #include <rtthread.h>
- #include <rtdevice.h>
- #include <board.h>
- /* defined the LED2 pin: PB6 */
- #define LED2_PIN GET_PIN(B, 6)
- int main(void)
- {
- /* set LED2 pin mode to output */
- rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);
- while (1)
- {
- rt_pin_write(LED2_PIN, PIN_HIGH);
- rt_thread_mdelay(500);
- rt_pin_write(LED2_PIN, PIN_LOW);
- rt_thread_mdelay(500);
- }
- return RT_EOK;
- }
使用rtthread开发程序,是硬件无关的,使用标准的rtthread语言进行开发。这个语法和arduino有相似的地方,
首先定义引脚的位置,
然后直接用
rt_pin_write(LED2_PIN, PIN_HIGH/LOW);
对引脚写入0或者1,就完成了点灯的过程。
延时是使用rtthread的系统tick而不是硬件的tick,这里配置为每秒1000次,对应实时系统,也是按照每秒1000次的间隔轮询访问,模拟实现多线程的任务。
这个时间在高性能的芯片可以选择更低,但是对应于通常的任务都足够了。
然后就是
scons构建工程,生成rtthread.bin二进制文件,
使用
pyocd flash 写入这个文件。
最后的显示效果如下
完美实现点灯游戏。
这个点灯其实是gpio访问的基本方法,其他的命令都是需要从这个语句开始,也是工程开发的起点。
|