本文我本人最先发表在这个地址http://group.chinaaet.com/4000264769/4100034324。现在将其搬运过来。
我入手的第一步就是点一个灯看看。当然就是很容易就实现了呀。接下来我觉得要搞点事情,从零开始接触cubemx图形化编程软件和 HAL库。接下来我就要说说我的学习过程了。
搭建环境我就不赘述了,大家自行去准备。由于我对定时器有一种特殊的情感,所以我第一个玩法就是使用定时器输出pwm点亮开发板上面的3个user leds。
1、 首先开始使用cube初始化TIMX.GPIO.
找到用户手册上的leds 的引脚接口;
PB0,PB7,PB14, 高电平 点亮。过程不详细贴图,只将关键的部分详细描述。
1) 初始化引脚,然后贴出TIM3配置
注意 RCC 也需要自己配置 如图的PH0,PH1的输入。
主要是配置定时器时钟与输出通道。其他的time 配置不再详细说明;
2)系统时钟配置
3)定时器初始化
分频系数,重装载值,比较值,模式等都配置完成了。
4)生成工程文件;
打开文件即可。
2编译下载即可。
(其实我原来也是这样想的,可是下载到板子上面,什么现象都没有,我就呵呵了。)
只能找问题咯,嘿嘿,我找了问题快花了10个小时,接下来说起来会很简单,但是在这个找问题的过程中,我深入了hal库,看了大量的手册。在此,我提醒广大的朋友,自己学习的时候,遇到问题一定要自己解决,可能别人一瞟就指出问题了,但是对于我们自己,重点是在找问题的过程中,摸索方法,积累经验。你要是不赞同我的话,上句可以忽略。比如我这次找问题,我完全无法在hal库中找的配置缺陷。我只能从寄存器来查看配置问题,因此,我摸熟了定时器的register,学会了软件调试查看寄存器的值。
最后我只给大家说说哪里出了问题,最后配置出来的工程只缺少了这样一条函数;
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3); //开启pwm输出;
这个函数最后定位在 TIMx->CCER |= (uint32_t)(ChannelState << Channel);
把ccer(capture\compare enable register)的 对应输出通道使能;不知道是我的cube 没配置对,还是软件本来就没有设置这个输出,需要用户自己去使能。
MDK 查看寄存器的值的方式:1.进入debug,2.click Peripherals 3.选择需要查看的寄存器。
这个是我个人经验,也是本人学习的总结。毕竟才疏学浅,难免有所错误,欢迎广大网友批评指正,大家共同进步。
我上传了一些我参考的手册,供大家学习!