终于,我们把STM32的入门三板斧的武功讲完了。有了这三板斧,我们就可以完成一些基本的项目了。终于熬出头了,从这一节开始,我们就用这三板斧,来玩不同的项目了。

当然。我们的项目不仅仅是玩,每一个项目都至少包含下面元素:

1.高耦合低内聚,便于移植,便于重用;

2. 不仅仅是好玩,而且有用,在其他项目中常常用得到;

敬请收藏,关注,从下面开始,带你做项目带你飞!

目录

1. 实战项目1-开发一个番茄钟

1.1项目背景

1.2 需求分析

1.3 项目开发

1.3.1 修改定时器中断间隔时间

1.3.2 修改main.c中的代码,设置倒计时时间为25分钟;

1.3.3  控制led闪烁时间及闪烁频率

1.3.4 实现beep蜂鸣一次的响停间隔及蜂鸣频率

1.3.5 在main.c中,检查SysTickFlags时间标志,根据分钟标志,实现分钟显示

2. 实战项目2-改进番茄时钟

2.1项目需求

2.2需求分析

2.3项目开发步骤

2.3.1 移植串口,实现串口环回测试

2.3.2 串口命令解析,串口指令测试

2.3.2 增设串口指令,修改单个番茄时长

2.3.3 通过串口获取完成的番茄个数

2.3.4 通过串口指令,暂停、开始番茄时钟

3. 实战项目3-摩斯密码翻译器

3.1项目需求

3.2需求分析

3.3开发步骤

3.3.1摩尔斯电码基本原理

3.3.2 从gethub查找摩尔斯电码相关代码,对其功能进行测试

3.3.3 分析代码结构,修改GPIO引脚,实现beep发送莫尔斯码。

3.3.4 实现按标准时间间隔发送

3.3.5 将全部符号与摩尔斯电码相对应。



1. 实战项目1-开发一个番茄钟

1.1项目背景

现代人很容易被各种琐事打扰,一会儿一个微信,一会儿一个电话,一会儿一条手机弹窗,让人们很难真正安静下来,从事写作或者学习。

为了解决这个问题,我们利用手边的STM32开发板,开发一款番茄时钟,具体功能如下:

1. 开机后,自动倒计时25分钟;

2. 倒计时时间,例如:剩余24分钟时,闪烁24下,剩余1分钟时,闪烁1次。闪烁频率为100ms亮,200ms熄灭;

3. 到达倒计时时间后,蜂鸣器会“滴滴滴滴”想起,蜂鸣器想起频率为100ms开900ms关,蜂鸣器响25S后,自动停止;

就是这样简单的一个项目,接下来我们进行需求分析,看看如何快速实现这个项目。

1.2 需求分析

根据前面的三板斧,我们可以知道,这个项目需要这样实现:

1.开启定时器中断,定时器中断间隔设置为10ms;

2. 设置SystemCounter全局结构体变量,用来计算秒和分钟;

3. 采用前面用过的led_check来控制亮灭时间和闪烁次数;

4. 开发类似led_check的函数,来控制蜂鸣器的频率和次数;

5. 从下面这个项目的源码入手修改

每节课都是一个项目 手把手用STM32打造联网气象站-5-STM32基础三件套-采用TIM定时器,实现无阻塞LED任意占空比和次数闪烁_可志嵌入式的博客-CSDN博客

1.3 项目开发

1.3.1 修改定时器中断间隔时间

每节课都是一个项目 手把手用STM32打造联网气象站-4-STM32基础三件套-TIM定时器初始化_可志嵌入式的博客-CSDN博客

根据这一节中2.2的内容,我们知道,设置10ms中断间隔,我们可以把Period设置为10000-1; Prescaler保持不变。

1.3.2 修改main.c中的代码,设置倒计时时间为25分钟;

宏定义实现倒计时时间的设置,便于led闪烁、蜂鸣器亮灭次数统一

设置好宏定义后,用宏定义作为参数,判定倒计时时间

1.3.3  控制led闪烁时间及闪烁频率

1)在led_check.h,通过修改控制闪烁时间的宏定义,控制闪烁频率为亮100ms,灭200ms。

2)在main.c中,配置set_led_config实现闪烁次数的要求

1.3.4 实现beep蜂鸣一次的响停间隔及蜂鸣频率

1)开发beep_check函数控制蜂鸣器的频率和次数

2)开发set_beep_config函数,用以初始化蜂鸣器的频率和次数。

参考:

每节课都是一个项目 手把手用STM32打造联网气象站-5-STM32基础三件套-采用TIM定时器,实现无阻塞LED任意占空比和次数闪烁_可志嵌入式的博客-CSDN博客

思路一样,只是注意bsp_beep.h中,beep开启、关闭与led对应的电平不同。最后要注意在main.c大循环中添加beep_check用以控制蜂鸣器的频率和次数

1.3.5 在main.c中,检查SysTickFlags时间标志,根据分钟标志,实现分钟显示

1)在控制时间的结构体中增加TimeFlag,用以设置单次运行模式,当时间超过25分钟后,通过对标号4,设置TimeFlag为1,便不再执行番茄番茄时钟程序

2)检查SysTickFlags时间标志,实现分钟显示

3)通过对时间标志 按位取反 再与原值位于运算,达到清除时间标志,而不影响其他位的数值。

4)位与位或等运算可参考:

位与&, 位或| ,位异或 ^ 总结 - Lucky& - 博客园 (cnblogs.com)https://www.cnblogs.com/xiaokang01/p/9651366.html

纸上得来终觉浅,绝知此事要躬行!

马上下载测试代码,看看效果。

测试代码链接

https://download.csdn.net/download/book_drabit/86150743

2. 实战项目2-改进番茄时钟

2.1项目需求

前面的番茄时钟虽然不错,但是还存在两个问题:

1. 没有输入设备,时间始终是固定死的;

2. 没有累计数据,不知道一天到底完成了几个番茄;

3.没有暂停功能,无法在需要时对番茄时钟进行暂停

为了解决这个问题,我们接下来就开发改进版本的番茄时钟;

2.2需求分析

为了实现这个需求,我们需要

1. 在前面工程基础上,移植串口,方便通过串口,设定番茄钟的时间,启动番茄钟,暂停番茄钟。这样,我们就需要开发一下串口解析命令。另外,为了是的代码更加便于维护,我们不仅仅通过串口控制,而且可以通过串口,查询番茄钟的软件版本信息和硬件版本信息;

2. 在前面的SystemConter的结构体全局变量中,我们需要增加一个累计番茄的变量,这样每次完成一个番茄,通过串口输出出来。同时也可以通过串口命令,查询共计完成了几个番茄。

2.3项目开发步骤

在前一节的基础上,我们需要:

2.3.1 移植串口,实现串口环回测试

解析串口代码结构,理解其串口协议,并通过串口发送指令进行验证。

1)带有串口协议的代码如下:

串口收发指令代码,实现用指令获取硬件版本号与软件版本号-C文档类资源-CSDN下载

对此串口代码进行移植:

首先,将此代码目录下的串口c文件和h文件文件复制到番茄时钟文件夹usart里面;

其次,在keil工程内将鼠标右键放在USER目录上,右键选择Manage Project Items,在USER目录下添加bsp_usart.c文件,

最后,点击魔法棒->C/C++选项卡->include paths将bsp_usart.h文件目录包含进去

测试。移植好后进行串口环回测试,向单片机发送字符,查看单片机返回的字符是否一致。

向单片机发送GHJ,单片机返回GHJ,发送与返回的字符一致,串口移植成功。

串口环回代码如下:

番茄时钟通过移植增设串口通信,并通过串口环回测试-C文档类资源-CSDN下载

2.3.2 串口命令解析,串口指令测试

完成环回之后,我们已经确定串口有效,串口能够接收数据,并且发送出来,在此基础上,我们进一步开发串口命令解析功能。

第一步:it.c中接收完整的串口命令并存入缓存

第二步:缓存中解析命令;

第三步:测试结果,验证功能;

1)在串口中断函数中缓存完整的串口命令

在串口中断服务函数中,urt_recv_tmp数组用于缓存完整的串口命令

在这里要注意一下,CurrentRxStep接收8个字节后,CurrentPoint才会累加

2)解析缓存中的串口指令

首先,代码开始执行时, PrePoint和CurrentPoint初始值都是0。当串口收到8个字节后,CurrentPoint增加1,这时PrePoint!=CurrentPoint,会进行命令复制,将串口收到的命令复制到UARTGetComm[ ]数组内。然后PrePoint自增,使得PrePoint和CurrentPoint再次相等。

其次,不断刷新串口状态,没有收到命令时,uart_status处在URT_IDLE状态,不停的break返回。当串口收到了正确命令后,UrtOrderReceiveFinish这个标志会被设置为SET,这时,uart_status进入URT_RX状态,进行串口命令解析。

最后,通过ReadCom函数提取指令的内容,根据指令的内容执行不同的操作。

其中指令A0 B1 02 00 00 00 00 00为获取固件版本信息。在测试的时候可以进行使用。

至此,串口命令解析到此结束。下面通过测试验证其功能。

3)测试以验证功能

通过串口助手向单片机发送指令A0 B1 02 00 00 00 00 00,查看返回的固件版本是否一致。

对应代码如下:

https://download.csdn.net/download/book_drabit/86247414

2.3.2 增设串口指令,修改单个番茄时长

在完成对串口指令的解析后,增加通过串口指令修改单个番茄时长。

第一步:定义全局变量,通过在程序内修改全局变量,控制番茄时长

第二步:增设串口指令,通过指令修改控制番茄时长的全局变量

第三步:测试结果,验证功能

1)增设全局变量,控制番茄时长

本节上部分开发番茄时钟时以讲过,可参考本节上部分内容。

2)在ReadCom函数中增设修改番茄时长的指令

首先,将指令第四位,即UARTGETCom[3]的值赋给TomatoTime全局变量。当修改时长后,番茄时钟重新开始计时,设立TomatoRestartFlag标志位用于控制番茄时钟是否清零用于计数的参数。

其次,在主函数中,根据TomatoRestartFlag判断是否复位番茄时钟计数参数。 根据TomatoTime的值对番茄时长进行控制。

至此,通过串口修改番茄时长功能完成开发完成,下一步进行测试。

3)串口修改番茄时间功能测试

 首先,在stm32f10x_it.c中修改定制器中断1分钟时长为6秒,缩短测试时间。

其次,通过串口助手向单片机发送16进制指令A0 B1 03 02 00 00 00 00,根据延时进行判断功能是否正常

经测试代码功能符合要求。

串口修改番茄时长代码如下:

(48条消息) 通过串口控制单个番茄时钟时长-C文档类资源-CSDN文库

2.3.3 通过串口获取完成的番茄个数

需求:1.一个番茄结束后,自动发送共完成的番茄个数。2.通过串口指令获取完成的番茄个数。

第一步:设置全局变量,用于记录共完成的番茄个数

        第二步:当完成一个番茄后,通过串口将记录番茄个数的全局变量数值发给上位机

        第三步:增设串口指令,当单片机收到指令后,通过串口将记录番茄个数的全局变量数值发给上位机

        第四步:测试以验证功能

1)通过全局变量记录番茄个数

首先,在bsp_TimeBase.c定义一个全局变量(全局变量会自动初始化为0)

其次,在 bsp_TimeBase.h中用extern进行引用

最后,在主函数中包含此头文件即可使用此全局变量

 2)当完成一个番茄后,FinishTomatoNum会自动增加 1 ,并通过串口将数值上报

首先,当番茄时间到,全局变量自动增加1

其次,通过串口将全局变量FinishTomatoNum进行打印

 再次,通过设置TomatoTimeEndFlag标志位为1;while(1)循环便不在执行此番茄始终程序。

最后,对功能进行测试,通过发送指令,查看单片机的返回值是否与完成次数一致

测试结果,功能正常

3)增加串口指令 0xA0 B1 04 返回完成的番茄次数全局变量值到串口助手

首先,筛选串口数据开头为0xA0 B1 04的指令

其次,设置DealFlag=0;表示完成指令。设置uart_status = URT_IDLE;以便进行下一次数据接收

4)测试功能,验证功能的正确性

首先,向单片机发送开头为0xA0 B1 04的8个字节数据,

其次,对比单片机返回值与实际结果是否一致

单片机返回值与实际结果一致,测试通过。

代码如下:

(48条消息) 通过串口获取完成的番茄个数-C文档类资源-CSDN文库

2.3.4 通过串口指令,暂停、开始番茄时钟

需求:1.暂停时,番茄时钟停止计时,秒不再增加,时间停止

2.番茄时间结束后。按暂停功能,番茄时钟重新计时

第一步,增设暂停标志位

第二步,定时器中断检测暂停标志位,停止更新秒变化标志位,达到暂停时间功能

第三步,增设串口暂停指令,控制暂停标志位。

第四步,测试验证功能正确性

1)增设暂停标志位

首先,在bsp_TimBase.h文件中  Tomato结构体中增设TomatTimePauseFlag

 其次,在bsp_TimBase.c文件中定义一个Tomato类型的结构体变量

最后,在bsp_TimBase.h文件extern引用此结构体变量,这样其他文件中的函数可以通过include bsp_TimBase.h文件,进而引用此结构体全局变量。

 2)定时器中断检测暂停标志位,停止更新秒变化标志位,达到暂停时间功能

首先,进入定时器中断函数,检测TomatClock.TomatTimePauseFlag不为0后,SystemTimer.second停止自增,进而SystemTimer.second == 6 条件不满足,分钟标志位停止更新。

其次,在main.c中,tomat_contrl_led_beep函数,检测不到分钟标志位,便停止更新led和beep蜂鸣器。

 3)增设串口暂停指令,控制暂停标志位。

首先,筛选出串口数据表头为0xA0 B1 04的指令

其次,判断若指令UARTGetComm[3] == 1,则设置标志位TomatTimePauseFlag为1,前面说过,若TomatTimePauseFlag为1,则定时器中断函数中,SystemTimer.second停止自增。

再次,判断若指令UARTGetComm[3] == 0,则设置标志位TomatTimePauseFlag为0,这样定时器中断函数中,SystemTimer.second自增,并再次判断,如果番茄时钟时间截至标志位TomatClock.TomatTimeEndFlag 为1,设置番茄时钟重新启动。

最后,设置DealFlag=0,表明指令处理结束,设置uart_status = URT_IDLE,继续进行下一次串口消息接收。

4) 测试验证功能正确性

即通过串口单片机向单片机发指令 0xA0 B1 04 01 00 00 00 00  番茄时钟暂停计时。发指令 0xA0 B1 04 00 00 00 00 00  番茄时钟继续计时

测试通过,功能符合要求。

至此,完成番茄时钟所有需求

1.通过串口指令修改番茄时钟计时时间

2.通过串口指令查看共完成的番茄个数。

3.当一个番茄时间完成后,会自动通过串口发送共完成的番茄个数

4.通过串口指令,暂停、开始番茄时钟

对应代码如下

(48条消息) 实现番茄时钟暂停功能,设置番茄时钟结构体替代取代控制番茄时钟的全局变量,详情见博客-C文档类资源-CSDN文库

3. 实战项目3-摩斯密码翻译器

3.1项目需求

电影中,常常可以看到很多关键情报,都是通过摩斯密码来传递的。然而,翻译摩斯密码并不容易。

摩斯密码采用一系列的点和线,来实现信息的表达和传递。

3.2需求分析

说老实话,真的用代码,从头开始,翻译摩斯密码,还是非常有挑战的。所以这一节,我们将介绍另外一种常用方法:从github找相关思路。

github是程序员的乐园,极客的世界,在github上面,说不定已经有摩斯密码翻译器了,我们只需要把它下载下来,再移植到我们的代码中,即可完成项目功能。

说干就干,我们再github上面,能够找到类似的项目。

3.3开发步骤

第一步,了解摩尔斯电码基本原理

第二步,从gethub查找摩尔斯电码相关代码,对其功能进行测试

第三步,分析代码结构,增加功能,实现用蜂鸣器将消息以摩尔斯电码的方式滴答发送出去

3.3.1摩尔斯电码基本原理

首先,摩尔斯电码通过点(.)和横杠(-)的组合代表不同的字符,字符构成单词,转变为人可以理解的词汇。

        's', "..."                             'o', "---"                            's', "..."  

其次,将字符转化为摩尔斯电码,更有利于通过简单的滴答声及延时将信息发送出去。由于不同字符由不同的摩尔斯电码组成,不同的摩尔斯电码对应不同时长的滴答声和滴答声间隔。字符便被区分开来。

********************************************************************************************
*    摩尔斯电码时间间隔包括五种:
*
*        1、点( · )                   :1 (读 “滴” dit ,时间占据1t )
*        2、划(—)                     :111 (读 “嗒” dah ,时间占据3t )
*        3、字符内部的停顿(在点和划之间):0 (时间占据1t )
*        4、字符间停顿                   :000 ( 时间占据3t )
*        5、单词间的停顿                 :0000000 ( 时间占据7t )
*
**********************************************************************************************

具体请参考一次看懂摩斯电码的密码 - 知乎 (zhihu.com)

3.3.2 从gethub查找摩尔斯电码相关代码,对其功能进行测试

首先,从gethub查找相关代码,github是极客的世界,有大量的优质开源项目。要学会使用github。github的使用大致分为账号注册、创建github仓库、git工具的安装三大步,此处不再赘述,详细使用请参考

还不会使用 GitHub ? GitHub 教程来了!万字图文详解 - 知乎 (zhihu.com)

从gethub下载的摩尔斯电码代码如下:

(40条消息) 摩尔斯电码,实现将字符转为摩尔斯电码的主体功能,能将摩尔斯电码通过串口上位机进行显示-C文档类资源-CSDN文库

其次,将代码下载到单片机进行验证,其能实现基本的字符转为摩尔斯电码功能,将摩尔斯电码通过串口进行显示。将摩尔斯电码以led闪烁的形式发送出去

3.3.3 分析代码结构,修改GPIO引脚,实现beep发送莫尔斯码。

第一步,分析代码结构

第二步,修改GPIO引脚,实现beep发送莫尔斯码。

1)进入主函数,查看其对摩尔斯电码函数的调用,分别查看(1)和(2)两个标签对应的函数。

首先, morse_init函数实现对摩尔斯电码GPIO引脚的初始化,后续可以通过GPIO对应的蜂鸣器将信号以声音的方式发送出去。

其次,不定长函数morse_printf实现两个功能(1):将摩尔斯电码通过串口打印显示。(2)将摩尔斯电码通过GPIO外接的led输送给外界。

可见,此摩尔斯电码只是将字母与摩尔斯电码对应起来,部分符号如  ? ( )等符号没有完善。

可见,摩尔斯电码发送时间间隔没有严格按照摩尔斯电码要求进行等待。

最后,对代码进行完善,增加摩尔斯电码对其他字符的支持,增加对莫尔斯码发送时间间隔的支持。在下一节讲述

不定长函数可参考下文:

void morse_printf(char *format, ...) { } 为不定长函数,其对输入参数的个数没有要求。不定长函数的基本调用方式为:

void my_printf(const char *format, ...)
va_list arg;  // va_list是一个宏,是指向不定长参数列表的指针
va_start(arg, format);   //初始化arg,将format后第一个地址赋值给arg
va_arg(arg, int);    //得arg指向参数的值,同时使arg指向下一个参数
vsnprintf((char *)pStr, 100, format, ap);
va_end(arg); //va_end 在有些实现中可能会把arg改成无效值,
//这里, 是把arg指针指向了 NULL,避   免出现野指针

具体可参考(40条消息) C语言 函数不定长参数 - C语言零基础入门教程_猿说编程的博客-CSDN博客_c++不定长参数

2)对功能进行完善,实现用蜂鸣器将消息以摩尔斯电码的方式滴答滴答发送出去

 首先,将led改为beep蜂鸣器

在Morse_TX.h修改宏定义,注意,由于电路不同,beep高电平为打开。

其次,在Morse_TX.c修改GPIO引脚为PA8

经测试,beep蜂鸣器正常闪烁。

3.3.4 实现按标准时间间隔发送

第一步,修改beep发送时间间隔,实现按标准时间间隔发送

第二步,增设对其他符号摩尔斯码的支持

第三步,测试以验证功能

  1. ( · ):1 (读 “滴” dit ,时间占据1t )
  2. 横杠(—):111 (读 “嗒” dah ,时间占据3t )
  3. 字符内部的停顿(在点和划之间):0 (时间占据1t )
  4. 字符间停顿:000 ( 时间占据3t )
  5. 单词间的停顿:0000000 ( 时间占据7t )

在Morse_TX.c中做如下操作,

1),设定基准等待时间、设定基准时间倍乘系数,这样代码看起来更清晰明了

2),在morse_printf函数内部,设置点、横杠、字符内部、字符间、单词间的时间停顿

3),修改完成后需对其功能进行验证,打开纸飞机串口助手,打开时间戳功能,对时间进行验证

单个时间戳是90ms,.... 共用时10个时间戳,共900ms,红框中时间间隔正确。以此类推对所有时间间隔进行验证,均符合要求。

3.3.5 将全部符号与摩尔斯电码相对应。

首先,在const tp_morse_index  st_morse[ ]最下方添加 “ / ” 用于摩尔斯电码单词之间的间隔。

其次,在morse_printf中添加switch语句,使输出字符与摩尔斯码一一对应。

最后,对以上功能进行验证,观察蜂鸣器与串口显示

经验证,功能正常。

代码如下:

(48条消息) 摩尔斯电码,实现将摩尔斯电码通过串口进行打印,通过蜂鸣器进行发送,具体详情见博客-C文档类资源-CSDN文库

这一段对话请每一个程序员或者有志于编程的人牢记:

老板:这个代码不是开源的吗?怎么需要这么久?开源的还需要你自己写吗?

程序员:*……&*……&*……&¥……%¥564@#¥@

每节课都是一个项目 手把手用STM32打造联网气象站-7-诚不欺我,用TIM, GPIO, USART三板斧干项目(挖坑篇)相关推荐

  1. 每节课都是一个项目 手把手用STM32打造联网气象站-4-STM32基础三件套-TIM定时器和SYSTICK初始化

    STM32基础系列包含了三件套,掌握了这三件套,类似于掌握了程咬金三板斧,就可以开始干项目,创造价值了.毕竟,真正的编程是一项实战性很强的技术,掌握编程主要靠实战,而不是靠知识灌输. STM32的编程 ...

  2. 每节课都是一个项目 手把手用STM32打造联网气象站-10-带有屏幕显示的番茄时钟

    目录 1.课程回顾 2. 升级你的番茄时钟 2.1项目需求-带有屏幕显示的番茄钟 2.2 需求分析 2.2.1 屏幕上方用中文字体显示:番茄时钟: 2.2.2 中文下方,带有时间倒计时显示: 2.2. ...

  3. 设计Course类:处理课程信息,每门课都有一个名字以及选课的学生,要能够向/从这个课程添加/删除一个学生

    public class Course {private String coureName;//课程名private String[] students = new String[5];//一个储存该 ...

  4. 一节计算机课作文500,难忘的一节课作文500字4篇

    上过那么多课,有没有哪节课是你觉得最难忘的,下面是关于难忘的一节课的作文,欢迎大家参阅! 难忘的一节课作文500字1 去年的一天早晨,我正在被窝里看漫画,只听见老妈对我说:"今天去学作文!& ...

  5. 2019年vipkid最新评价,vipkid多少钱一节课

    最近关于vipkid少儿英语的评价不少,也有不少关于vipkid费用的问题,早前我在地铁上,看到这家vipkid铺天盖地的广告,感觉还做的很到位的,现在给孩子学习英语容易多了,只要报名线上的机构,也可 ...

  6. 《看聊天记录都学不会C语言?太菜了吧》(15)你学了一节课的函数我5分钟搞定了,还很熟

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

  7. 软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型

    文章目录 软件危机 软件的定义 软件危机典型表现 产生软件危机的原因 消除软件危机的方法 软件工程 什么是软件工程 软件工程的本质特征 软件工程的基本原理 软件工程方法学 传统方法学 面向对象方法学 ...

  8. 信管师培训之第六节课作业(项目质量管理+项目人力资源管理)

    第10章  项目质量管理 1.质量管理基本原则? 质量管理的基本原则: (1).以实用为核心的多元需求. (2).系统工程 (3).职工参与管理 (4).管理层和第一把手重视 (5).保护消费者权益. ...

  9. 这18节课手把手教会你入门蚂蚁区块链BAAS系统开发

    1,摘要 蚂蚁区块链创新大赛正在如火如荼的进行中,这次蚂蚁区块链创新大赛奖金丰厚,获奖者权益多多.那么,对于一个区块链团队来说,如何快速了解蚂蚁BAAS系统的能力,开发环境以及接口是一件很重要的事情. ...

最新文章

  1. Java学习总结:23
  2. 阅读源代码的一点小技巧
  3. twisted应用中异步回调的方式及线程的应用
  4. JavaWeb学习之路——SSM框架之Mybatis(二)
  5. SAP Spartacus storefront.component.html 里的 SkipLinkComponent 如何创建的
  6. Axios 作弊表(Cheat Sheet)
  7. 【小技巧】【Java】 创建指定数目m的Set数组
  8. 校招面试经验小分享,阿里腾讯美团字节实习offer
  9. 前向星及spfa大法
  10. 编译Android VNC Server(pc远程控制android)
  11. 提升数据建模的10种技术措施
  12. Undefined index: submit in的错误处理
  13. android sns空间代码,Android视频分享SNS类APP完整源码(服务端+客户端)
  14. 每月碎碎念 | 2019.10
  15. 【技术公开课】iOS App研发的最后冲刺:内测与部署
  16. 下雨打雷效果(动态)html
  17. 解决VirtualBox增强功能异常
  18. vulnhub-warzone_1
  19. 禁用和恢复用户账户Linux,linux用户和组管理.ppt
  20. MM32F3273G8P火龙果开发板MindSDK开发教程12 -获取msa311加速器的敲击事件

热门文章

  1. culture defining_culture
  2. html5 file 兼容性,WPS2013造成的HTML5 file.type值异常的解决方法
  3. AXI 总线协议学习笔记(3)
  4. 高并发实战2---手写计算器缓存
  5. [附源码]计算机毕业设计Python+uniapp一站式婚庆服务平台APP6kqlk(程序+lw+APP+远程部署)
  6. PyAutoGUI的Tween / Easing功能
  7. 多个自变量因变量中介变量做Amos
  8. 怎样改论文能降低论文重复率
  9. Android超级简单的实现圆形,矩形和圆角
  10. Excel批量给字符加上双引号