智能车制作

标题: 逐飞【STC智能车开源库】正式上线 [打印本页]

作者: fbhsy    时间: 2020-4-20 17:33
标题: 逐飞【STC智能车开源库】正式上线
本帖最后由 fbhsy 于 2020-4-20 17:45 编辑

[attach]94987[/attach]

一、前情提要:

       STC(宏晶)为第十五届全国大学生智能汽车竞赛的新引入的赞助商之一,在已经公布的规则中,指定了节能组只能使用STC的三款单片机作为主控芯片,其中包括最开始公布的两款(STC8G2K64S4STC8H8K64S4)可以免费申请的样片。后来根据广大师生建议,为了便于参赛队伍自行购买方便,对于现在库存量比较大的单片机的型号也允许用于智能车竞赛,扩充的STC单片机型号为STC8A8K64S4在这三款单片机中,8G2K,8H8K都是新品,并且都可以申请免费样片,目前8G2K已经量产,并已经根据申请情况免费发放给两百多所高校;8H8K量产还需要一段时间,目前还申请不到,原厂内测中,想使用这款的同学还需要再等一段时间;8A8K是商用成熟产品,可以直接购买使用。       二、底层驱动库需求:
   按理说,大家对STC应该很熟悉了,至少比对英飞凌和恩智浦熟悉很多了,而且STC单片机本身也简单易用,寄存器也没多少,不像32位单片机那么复杂,就算自己从头写也不会太难,但很奇怪的是自从新规则发布以来,依然有很多想参加智能车竞赛的同学们希望有个底层库供他们开发使用,我想这里面有一部分是的确还没学习过单片机,还有一部分应该就是懒吧,对于还没有单片机基础的,可以参考逐飞底层驱动库的写法自己学习单片机的操作和使用,但是对于那部分懒癌同学,我也无话可说了啊,毕竟是开源的,欢迎使用,欢迎大佬提出使用建议,相互交流,共同进步。
       三、逐飞STC智能车开源库:
   本次逐飞发布基于上文中能拿到芯片的两款单片机的底层库,分别是“逐飞STC8G2K开源库”&“逐飞STC8A8K开源库”。下面我们就通过本文来详细了解下吧。

版权声明:该开源库版权归成都逐飞智能设备有限公司所有,欢迎各位使用并传播该库程序,修改内容时务必保留逐飞科技的版权声明。未经允许不得用于商业用途或变相获利。


逐飞STC8G2K开源库链接:https://gitee.com/seekfree/STC8G2K64S4_Library
逐飞STC8A8K开源库链接:https://gitee.com/seekfree/STC8A8K64S4_Library

       STC8G/STC8A底层库继续沿用逐飞科技RT10xx系列库的风格,使用过逐飞库的同学应该知道,简洁易懂,容易上手。本次STC8G/STC8A开源库使用MDK进行编写的。使用单片机寄存器作为最底层。然后将各个模块使用的寄存器进行封装提升易用性。当大家觉得库的功能不满足自己使用需求时,可以采用同样的方式自己调用寄存器来实现更多其他的功能。大家可以通过我们的库来学习官方的寄存器怎么使用,当自己学会怎么使用官方的寄存器之后也可以直接使用寄存器,这样的好处就是没有多余的代码,降低自己代码的体积,提高效率。我们并不希望用户只会用我们的库,我们更多的是希望初学者不被高门槛给拦在外面,逐飞库只是提供一个入门学习的渠道而已。
    3.1、目录结构图:
[attach]94977[/attach][attach]94978[/attach]
   Libraries文件夹下放置的是STC头文件,以及数据类型声明,board等文件。
   seekfree_libraries文件夹下放置的是逐飞科技精心编写的底层驱动,底层驱动是用STC提供的头文件进行二次封装,以简化各个模块的使用步骤,使用更加方便。如果不是参加竞赛的用户可以使用这一层的驱动来实现STC8A/8G的快速上手,也可以通过查看我们的代码用于寄存器如何使用。目前支持ADC、EXTI、IIC、SPI、PIT、CTIME、UART。如果有需要其他功能亦可直接调用寄存器来实现其他功能。
   seekfree_peripheral文件夹下放置的是各类常用的模块驱动,当使用到这些模块时只需要调用函数即可实现相应的功能,非常的简单方便。目前实现线性CCD、1.8寸TFT、ICM20602六轴陀螺仪、IIC通讯协议(模拟IO)、1.14寸IPS液晶屏、MPU6050六轴陀螺仪、OLED显示屏、虚拟示波器通讯协议、无线转串口模块。
   CODE文件夹下放置的是用户自己添加的代码文件,当用户自己添加文件的时候我们建议全部添加在这个文件夹内。
   USER文件夹下放置的是main.c、isr.h、isr.c文件。

   3.2、底层驱动功能模块
   目前逐飞STC8A/8G库实现了芯片中ADC、SPI、IIC、UART、GPIO、PIT、DELAY、EXTI、CTIMR功能模块的使用,以下几个模块单独说明下:
   GPIO模块使用过89C52的同学就知道GPIO不需要初始化,直接就能使用。在官方提供的头文件中,所有的端口都已经被定义了。[attach]94979[/attach]
   我们所编写的GPIO模块包含了GPIO模式选择,上拉使能。
   EXTI模块外部中断模块包含了五个外部中断源触发中断,其中INT0和INT1支持边沿触发+下降沿触发,其他三个只支持下降沿触发。
   PWM模块STC8G2K64S4理论上可以输出45路PWM,STC8A8G64S4可以输出8路PWM,对于节能组来说8路PWM实际上已经够用了。
   CTIMR模块CTIMR模块是通过定时器外部计数,作为输入捕获。一共有五个定时器,最多实现五个CTIMER模块,每个模块可以实现一路编码器的脉冲采集,这样就可以采集逐飞带方向输出的编码器数据。
   PIT模块通过pca模块,进行周期中断。
   DELAY模块通过pca模块,进行硬件延时。

   3.3、各外设模块的底层

   逐飞STC8A/8G库还包含各个外设的模块的底层适配,具体包含外设模块如下图所示:
[attach]94980[/attach]
   3.4、库例程
   逐飞也为各位准备了各个模块的库例程,如下图截图所示,可以让新手朋友或者没有使用过我们库的小伙伴能够快速上手,大家从截图中可以看到目录全部采用英文,因为这样可以避免出现各种奇怪的问题,所以建议写代码的小伙伴都用全英文的路径避免出问题。最下方的excel中有讲解例程的功能。
[attach]94981[/attach]
   3.5、使用示例

   接下来我们通过两个外设模块的举例来演示库是如何使用的。
   示例一:线性CCD数据采集。根据任务需要我们查找seekfree_peripheral文件夹下,可以找到SEEKFREE_TSL1401文件,我们只需要调用相关的函数即可实现任务需求。从这个示例我们可以看到,“红孩儿”线性CCD又要重出江湖了,用于节能组车库识别,或者使用STC单片机做基础四轮组的同学也可以采用电磁导航+线性CCD识别车库的方案。
[attach]94982[/attach]

   示例二:编码器数据采集。编码器数据采集,是通过定时器作为外部输入捕获来获取编码器数据。脉冲捕获函数仅需要填写一个参数即可获取数据。下图示例为双编码器数据采集示例。
[attach]94983[/attach]
   3.6、注意事项:

    3.6.1、串口需要占用定时器,CTIMER外部计数也需要占用定时器。不要同时使用同一个定时器。
    3.6.2、逐飞STC8A/8G库,可以在线仿真,也可以使用stc-isp软件进行下载,而下载需要的HEX文件,保存在Seekfree_STC8xxxxxxx_Opensource_Library\Project\MDK\Out_File文件下。
    3.6.3、逐飞STC8A/8G库,默认使用内置晶振。在isp软件下载程序的时候,需要将 “输入用户程序运行是的IRC频率”设置为和 board.h文件中的FOSC宏定义一致,如下两图所示。
[attach]94984[/attach][attach]94985[/attach]

   四、结束语
   本期的库介绍就到这里了,大家在使用库的过程中如果遇到什么BUG,请及时联系我们!我们将尽快修复。PS:通过QQ群联系我们更方便,也方便大家讨论交流,QQ群技术交流平台(逐飞科技__智能车③部:824575535),如果发现库有BUG、或不足、或对库有什么建议,可以在群里提问或发表建议,也可与管理员私聊,保障该开源库有什么缺陷时可以及时得到解决。然后再分享给各位,形成良性循环。最后,当然是希望大家多多支持逐飞科技,逐飞STC8G/ STC8A核心板已备好,线性CCD和STC主板学习板也即将上架,你们的支持是我们开源的动力。再次感谢车友们的厚爱!
[attach]94986[/attach]
本文由“逐飞科技”编辑整理,时间仓促,水平有限,难免有遗漏和错误,大神亲拍,欢迎交流指正。愿智能车世界更美好!






作者: The-answer    时间: 2020-4-20 22:16
我顶!!
作者: 林淑馨    时间: 2020-4-23 11:34
期待大大的外设库呀
作者: hp34401aa    时间: 2020-4-23 12:33
支持。已下载学习。
作者: autopccopy    时间: 2020-4-26 10:35
前天申请到STC8H的样片(测试版A, 打标为TST: test), 支持硬件USB. 但USB仿真还需要下一版B
(194)

作者: cs538138    时间: 2020-4-26 10:57
autopccopy 发表于 2020-4-26 10:35
前天申请到STC8H的样片(测试版A, 打标为TST: test), 支持硬件USB. 但USB仿真还需要下一版B
(194)

大哥你是STC的人吧哈哈





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2