前几天买了个纯铜的小刀头,如题,还是老老实实用长寿头吧。据说松香味啊铅雾啊对身体有害,吓得我不禁多吸了两口,真香
stm32 f103用TM1637驱动数码管
其中读键部分,无符号变量参与右移运算,然后把无符号返回成有符号变量。因为是改的TM1638的程序,不知道为毛他这么搞,所以把类型改成有符号的了,结果出错。搞了半天才搞明白:有符号变量右移的时候,如果是正数左边填0,如果是负数,左边填1。这是基础的东西,结果搞了半天。接下来还得复习一下C语言了。
接线啥的参考手册。TM1637和TM1638不一样,TM1638驱动共阴数码管比较方便,TM1637驱动共阳数码管比较方便。另外TM1637供电电压是5V,高电平低值为0.7VDD,也就是3.5V,而我这个f103是3.3V的,但是很多端口都耐受5V,所以找了一个可以耐受5V的端口,用开漏输出,上拉10k电阻,顺便还可以直接读键。另外那个数码管的时钟点,真的是麻烦,TM1637的SG口只有8个,偏偏这两个时钟点的阳极是连在公共点上的,所以只好再浪费一或二个单片机IO口了。时钟点部分没有写,反正也简单的。下面是TM1637.c的内容。很简略,下次用得上的时候再说。
阅读更多stm32 PWM调节有延迟
今天遇到一个问题,PWM输出时,如果使能exti外部中断,PWM空占比的调节有延迟。刚发现问题时表现为呼吸灯乱跳,psc的值0还好,但也肉眼可见,设置个二三十就延迟严重,阶梯性的跳亮度。设置一千多就完全找不到亮度变化的规律了。原本以为逻辑上搞错了,检查了一下发现没问题,然后看初始化部分,对照教程来看也没啥问题。然后翻出400多大洋的F407,例程是没问题的,我这个就有问题。因为就是瞎搞,所以我的test project里面是include了一大堆,然后把所有的多余部分都注释掉,发现也能正确运行。然后就一个个试,发现是exti的问题。把中断处理函数的内容都清空,只剩一条清除挂起位,也还是不行。然后我就加了个串口调试,发现psc的值变化是正常的。本来么,换一个端口就没问题了,不过问题还是没有解决,心里实在是痒的慌,到这里碰到瓶颈了,换了一个端口TIM4的,发现问题没有出现。又去查资料,发现 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); 这条,Enable是要等到下个周期才会变化,Disable就会立即变化。之前问题算是解决了。不过问题又来了,为毛设置为Enable的时候,不使能exti就没问题,使能了就有问题?!不过这个问题先留着下次再研究吧。等看到一定程度回来可能会比较好。现在这一块对我来说有点深入了。
PHP获取动态IP并记录到文件
花生壳的DDNS虽然稳定性比以前好了很多,不过总是在重要时刻抽风,需要用到的时候就是连不上。所以一直想换一个DDNS但找不到稳定又免费的。正好有一台vps,所以想先凑合一下搞一个显示当前动态IP的东西。接下来准备研究一下namesilo的API。家里用的是ROS,GET方式的参数传递还是可以用的,据说新版可以用POST。VPS是外国的,装了PHP,所以就写了一个PHP页面,把动态IP数据写入到一个htm文件中(PHP是完全不会的,只会找PHP手册一个一个抄)。访问这个php文件,就可以把内容写到test.htm中。如
http://xxx.xxx.xxx/test.php?ipaddr1=192.168.1.1
代码如下:
阅读更多最近刚开始学习单片机
最近淘宝买了一块正点原子的开发板,400多块钱。显示屏我嫌贵,将近200块钱,所以在第三方买了一块40来块的,照样用的挺好,就是确实显示效果不咋地,不过我要显示效果来干嘛,呵呵。拿回来了解了一下单片机是怎么回事后,发现好像压根用不着买这么贵的板子。芯片中flash的写入寿命,估计也就两三年。然后我买了一块10块钱的stm32f103c8t6,还有一块面包板和原件若干,总共50不到,然后对着f407的教程慢慢学,有问题的地方网上搜索一下。顺便可以学一下外围电路。感觉初学者不太适合学那种成品开发板,比如我这种,很可能就跑一遍例程就完事了,最后可能啥也不明白,换一块mcu,说不定就抓瞎了。说起来f103和f407的各种结构体定义都不一样,我也不知道为啥不统一一下。当然等学好了说不定就明白为什么了。最近目标是做一块温控器,温度探头和固态继电器和加热器件还得买,淘宝初七才开门。或者可以先用mos管做个小功率的。主要问题还是算法方面,感觉得好好研究研究。正点原子那块板,得等f103吃得差不多了再拿出来吧。也不知道学这玩意以后能不能赚的到钱。