21回答

0收藏

在190小红板上实现Trochili平台上的RFID

GD32 GD32 8954 人阅读 | 21 人回复 | 2016-05-02

本帖最后由 火oooo 于 2016-5-2 19:56 编辑

其实早在1年前有机会得到一块GD23F103的板子,但一直没得机会玩起来。后来有机会遇到留虚名老师,得以了解Trochili,这才又开始重新审视GD32。由于时间上的冲突,之前的GD几次活动没能赶上,所以就非常珍视这次190的小红板,而且得到论坛xinxin、飞飞的支持,终于如愿得到期待已久的小红板,再次感谢xinxin、飞飞和留虚名老师。
这次使用小红板主要实现的目标有2个:1. 在190平台上深入理解trochili;2. 基于1实现RFID的读卡系统。
因为本彩笔是系统白,故前面会更新的较慢,但会以新人的视角来理解Trochili,并把过程完全的分享给关注本帖的大家,谢谢大家的关注。
分享到:
回复

使用道具 举报

回答|共 21 个

倒序浏览

沙发

火oooo

发表于 2016-5-2 16:44:10 | 只看该作者

焊好排针的小红板

本帖最后由 火oooo 于 2016-5-5 08:04 编辑

开箱帖什么的,因为有大大会秀出,所以咱渣的拍照技术就不丢人了。
这里只把焊好排针的小红板秀一下


有条尾巴?那是错觉,其实是条手挽带,请看下图

WP_20160502_002.jpg (1.65 MB, 下载次数: 114)

小红板的正面

小红板的正面

WP_20160502_003.jpg (1.65 MB, 下载次数: 108)

小红板的背面

小红板的背面
板凳

火oooo

发表于 2016-5-2 16:44:47 | 只看该作者

1. Trochili系统部分

本帖最后由 火oooo 于 2016-5-2 20:28 编辑

拿到小红板时激动的心情简直是无法用心情来形容,但是还没来得及激动多久,心情就一下子冷了下来……因为插上电后看着闪烁的灯,茫然了,不知所措……接下来做什么?怎么做?自己犹如深处浓雾之中的独身旅人

在不知所措中试着打开飞鸟哥亲情奉献的例程“trochili_v0.12_preview4_20160408”,试着编译一下。30个错误,一下子蒙了。看下提示信息,都是core_cmInstr.h 文件无法打开,终于知道在包含文件中此文件的路径有误,修改为“d:\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Include”,解决,编译通过。

debug工具选择的是“CMSIS-DAP Debugger”,其它默认,download成功,又可以看到闪烁的灯。虽然这次的闪灯跟刚拿到板子时的情况是一样的,但心情却不一样了,因为对于Trochili终于踏出了第一步。

接下来,看到例程中有多个example,想逐个尝试一下,看下有什么不同的效果……but……该怎么改?

看书,看飞鸟哥的《嵌入式实时操作系统原理与最佳实践》(注:请在论坛上查找最新的电子版,机械工业版的与最新的例程有出入),查找程序的入口,终于看到在每个example中都有类似的一句“#if (EVB_EXAMPLE == CH13_BOARD_TEST_EXAMPLE)”,结合“example.h”文件中的“#define EVB_EXAMPLE                CH13_BOARD_TEST_EXAMPLE”一句,理解到把此句更换为需要测试的例子就好。比如想要测试线程的话,就更改为“#define EVB_EXAMPLE                  CH2_THREAD_EXAMPLE1”,在编译,下载后可以看到板上的LD4、LD5、LD6依次亮、灭。而后面的2~7现象依次是
2:LD5亮、灭;
3:LD5亮、灭;
4:LD5亮、灭;
5:LD5亮、灭;
6:LD5、LD6依次亮、灭2次;
7:LD5亮、灭。这是直观的小红板的表现,对于程序的解读,在后面会再深入。而其它的example后面会再进行测试。




地板

火oooo

发表于 2016-5-2 20:00:18 | 只看该作者

本帖最后由 火oooo 于 2016-5-5 08:10 编辑

由于3楼不知为何不能写入,所以先把预留给RFID应用的这层给占了吧。
接着说CH2_THREAD_EXAMPLE1,也就是thread_init.c这个文件。这个应用(称这个为应用不知合适不合适,还请飞鸟哥指正,谢谢)现象大家都还记得是什么吧?就是3颗led依次亮灭。
在程序中我们可以看到这样一段代码:
        delay(0x8FFFFF);
        EvbLedControl(LED1, LED_ON);

        delay(0x8FFFFF);
        EvbLedControl(LED1, LED_OFF);

        delay(0x8FFFFF);
        EvbLedControl(LED2, LED_ON);

        delay(0x8FFFFF);
        EvbLedControl(LED2, LED_OFF);

        delay(0x8FFFFF);
        EvbLedControl(LED3, LED_ON);

        delay(0x8FFFFF);
        EvbLedControl(LED3, LED_OFF);

是不是觉得很熟悉?这就是我们看到的led亮灭的对应部分。亮的时间由延时函数delay的参数决定。而这段代码存在于static void ThreadLedEntry(TArgument data)这个入口函数中。所以现在我们来看一下这个应用thread_init.c的整体结构:
1. 包含头文件        
2. 预编译开关
3. 三个参数          设定栈长宽字节、优先级字节、时间片字节的长度
4. 定义线程
5. 定义线程栈
6. 定义线程入口函数  线程的主要功能在这里实现。static void ThreadLedEntry(TArgument data)函数就在这个位置
7. 定义应用入口函数  系统调用此应用,从而对线程进行处理
8. 定义main函数
这个结构在后续的程序分析中我们再逐个印证。

5#

jwdxu2009

发表于 2016-5-2 22:26:25 | 只看该作者

看一看,参考和学习
6#

toofree

发表于 2016-5-4 09:51:10 | 只看该作者

焊出线想做什么,不弄GD32F190,而是直接把板载调试器的GD32F103当普通功能用?
这样用应该也是可以的,多一个USB口,3.3V IO电平,引出线外挂调试器。
7#

糖悦之果飞

发表于 2016-5-4 10:20:22 | 只看该作者

文章不错,请内容去经验频道一并发一下,可以有双重奖励哟http://jingyan.eeboard.com/
8#

火oooo

发表于 2016-5-5 06:58:37 | 只看该作者

toofree 发表于 2016-5-4 09:51
焊出线想做什么,不弄GD32F190,而是直接把板载调试器的GD32F103当普通功能用?
这样用应该也是可以的,多 ...

楼上说的是。我有强迫症。自从我的V7的JLink不能用之后,一直使用nucleo的stlink作为调试工具用。GD这个虽然还不太清楚,但还是被我先引出来了,后面用到再说。
9#

火oooo

发表于 2016-5-5 07:46:11 | 只看该作者

糖悦之果飞 发表于 2016-5-4 10:20
文章不错,请内容去经验频道一并发一下,可以有双重奖励哟http://jingyan.eeboard.com/ ...

请问飞飞,一个楼层里能写多少字?我现在编辑3楼时,无法写入。
10#

火oooo

发表于 2016-5-5 08:01:18 | 只看该作者

jinglixixi 发表于 2016-5-3 14:59
感谢分享,初次使用时确实关心的是编译环境的建立与下载。随后就是你玩转示例并改为自己需要的功能。 ...

同意楼上。小白的经历咱都有过,特别是一些非常小的细节可能都会阻挡相当一部分人继续深入下去,所以我想把我遇到的问题跟大家分享出来,这样至少有同样情况的人可以顺利过去了。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条