lygo
获得 45 次赞
帮助过87人
本帖最后由 lygo 于 2017-9-14 19:05 编辑 说说我的感受吧: 首先自己有幸得到这块板子的试用,十分开心。在这块板子的试用期间自己学到最多的就是学会了hal库的使用方法,hal库真的十分方便,只需要点击几下就完成了基本配置,大概是以后的潮流吧。同时真诚的感谢云汉论坛和厂商给了我这个试用机会,十分感谢啦,笔者会努力写好试用得啦。 想学习hal库的话,笔者也把相关资料给了大家,希望咱们一起努力,嘻嘻:lol。最后谢谢大家点个赞呗~~~:victory:
刚好自己手里有一个oled模块,索性就自己拿来显示dht11采集到的数据了,进入正题吧。 代码如下:(其实都是自己移植的别人的驱动,捡现成的吧:lol) (1)、oled.c代码如下:
前面用了串口通信的轮询方式,那么这篇文章就要用dma来接收数据了。如何接收不定长数据呢?那么这篇帖子就会为大家讲解。其实就是利用stm32单片机中的idle中断,所以利用这个中断,可以接收不定长字节的数据。idle就是串口收到一帧数据后,发生的中断。什么是一帧数据呢?比如说给单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据。一帧数据结束后,就会产生idle中断。这个中断真是太有用了。省去了好多判断的麻烦。详情请见下篇帖子:(不定长数据接收的原理
本帖最后由 lygo 于 2017-9-14 00:03 编辑 既然定时器学习的差不多了,还有就是输入捕获了。输入捕获就让大家去完成了,在这里我也就不写了,嘿嘿。输入捕获可以测量频率,占空比以及电机编码器的值(脉冲数的值),也比较好玩的。好的,那么就进入正题吧,这次就进入到串口的学习,那么先先学习简单的吧,printf打印数据输出到串口显示,还有利用scanf实现从串口输入数据然后数据又通过printf打印出来。 注意:板载的虚拟串口是usart2(所以下面的配置是针对串口2进行配置的),所以可直接用串口2打印数据,什么是虚拟串口。什么是虚拟串口?虚拟串口也是要靠硬件来实现的,现在市场上有很多协议转换类的产品。比如:usb转串口,网口转串口,光纤转串口等设备。通过厂家自带的软件,可以把pc之外的接口虚拟到你的pc上,成为你计算机的一个com口,你可以把这个串口打开使用,像你pc上的 com口一样去用。 那么下面就开始配置串口吧: (1)、新建工程就不用说了吧,前面都说的十分清楚地,如果还不清楚话,可以去看前面我的帖子。 (2)、选择串口2且设置为一步通信方式,pa2设置发送引脚,pa3设置为接收引脚。如下图:
本帖最后由 lygo 于 2017-9-5 23:44 编辑 前面那一篇帖子学习了按键点灯,那么接下来这篇帖子咱们就玩高大上一点行不行(其实是nucleo外设没多少,还在点灯),由于第一篇帖子是延时来点灯,那么本帖子就来一下定时器计数来实现点灯吧。首先先介绍下定时器吧,我相信学过stm32的人肯定都会知道定时器吧,而定时器本质就是计数器,计数器对内部计数也就构成了定时器。其原理如下:假设为向上计数模式:比如设定一个计数上限,但是不能超过65535(最大值),然后让计数器开始计数,当计数值到达上限了,它再从头开始计数。只不过,当这一轮计数完毕时,会产生一个更新中断,我们可以让 mcu 为我们做点事,比如打开或关闭一个 led 灯。这里还需要介绍个概念预分频器:起到一个时钟分频作用,比如设定计数器的工作频率(比如时钟频率为48m,48分频后就变为了1m,即就是1us)。当计数值到达上或下限时,你让定时器产生一个事件,还是让定时器产生一个中断,你得告诉定时器。然后设计一个事件处理函数或中断处理函数,在里面完成要 mcu 完成的操作。配置定时器的步骤如下: 1. 选一个定时器来操作,有高级也有通用定时器,这里我们选 tim2,这是个通用定时器。 2. 设置定时器的计数频率,也就是定时器的预分频器 3. 指定计数上限 4. 当计数器到达上或下限时,定时器产生事件还是中断 5. 打开定时器 实现的效果:led灯一会灭,一会亮,话不多说,直接上吧。 第一步:选择定时器,如下: