开发日志 170227

昨天装工具链又浪费了一天,今天也没什么进度,GG。

今天重新温习了一下STM32的基本开发。使用Win+STM32CubeMX+Keil v5,做了LED Blink,按键控制LED,PWM变占空比输出。都是以前做过的东西,今天再回顾一下。

统计了一下动力板的IO,感觉STM32F103RBT6就差不多了,ZET6简直大的丧心病狂,似乎没这个必要。上周末买的SPI-CAN总线模块(MCP2515+TJA1080)也到了,明天可以开始搞树莓派驱动了。

不过想到要从GitHub上Clone工具链和内核源码,头瞬间又大了一圈

再想想反正还要再看一遍CAN总线协议,边拖边看吧

之前企图在Linux下进行STM32的开发,安装了STM32CubeMX和SW4STM32,折腾了半天开发环境,总算是编译成功了。但是下载还是没能搞定,考虑到Eclipse着实不好用,还卡,Debug可能也不那么方便,就没再弄。幸好当初留下了原来的Windows Server 2012 R2,装了Win的工具链,感觉良好。

另外比较奇怪的是,Windows Server竟然出乎意料的流畅,甩了openSUSE两条街。额,好吧,小内存情况下IE比Chrome顺畅,Keil比Eclipse顺畅好像也没啥不对。不过我感觉硬盘或者SATA控制器的Linux驱动有毛病,硬盘总是卡住,内核也总是不响应。我觉得这和AMD的CPU一定脱不了干系……

毕设方面,师兄的叶绿素检测模块简直可怕,激活叶绿素的时候居然要大概30W的功率……最后决定检测模块直接用电池拉过去了。本来打算给模块留5V电源出来的,想想6A的电流都觉得醉,还是让模块自己想办法吧。

今天没踩到啥大坑,只有个小坑,就是那个Button的使用上一定注意上拉和下拉。如果外部进行了上拉那自然没关系;如果像下图一样,外部没给上拉的话,一定要把引脚配置成上拉或下拉(根据电路图而定),否则开关没按下时,引脚实际是断开状态,这就GG了……

单片机按键示意图

在我这里,我设置了按下灯,LED亮。即读到什么电平,往LED上写什么电平(LED是低有效)。然后上电是好的,按键按下去LED也亮了,就是松了手灭不了。最开始还以为是程序GG了,但后来发现过了一会它又灭了。最开始以为程序哪里写错了,后来摸了一下片子,发现LED啪啪乱闪,才想到这个方面……

PWM方面,只要在Cube里面配置好就行了,不过要注意Clock Source和Trigger Source一定要Disable,否则会出问题。还有那个预分频器和自动重载寄存器,记得是从0开始的。想32分频,预分频器给31;定时器周期1000,自动重载寄存器给999。改变周期的话,直接修改TIMx->CCRn就行,这个是比较/捕获寄存器,触发PWM输出引脚电平改变用的。

不过ZHC大神说这样不安全,应该先停下PWM,改完再启动。我倒是觉得没啥关系,32位寄存器嘛,写操作就一个时钟周期嘛,既然是原子操作那应该也没啥吧。倒是把PWM停下的话舵机就直接转到底了把?所以还得看情况。

OK,就这些吧。

发表评论