你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用Python在STM32平台上高效编程快速应用1:人生苦短快用Python  

[复制链接]
源地1号 发布时间:2019-6-6 11:57
本帖最后由 源地1号 于 2019-6-7 22:29 编辑

背景:传统印象中,使用STM32流程:在IDE环境下,使用C语言,编写,编译,链接,调试,修改,烧录过程。乍一听,使用Pyhton语言完成STM32编程和应用是不是一脸懵逼,当你熟悉了在STM32平台上使用python编程后,会情不自禁地怒吼道:卧靠,还能这样用,太爽了!
来来来,我先给大家讲一个用生命换来渴望使用Python开发STM32的故事(如有雷同,纯属巧合),请大家收起所有的疑问和不解,认真看一遍下述过程,感受一下

提供的硬件upython板子
-----------------------
MCU:STM32F405RGT6
外部主晶振:12M
外部RTC晶振:32.768K
板子上有4个LED灯
老板的要求,小A(程序猿)的板砖
-----------------------
老板:使用RTC实时时钟,先校准时间,在时间走到每一分钟的第9秒时,点亮一盏灯,在每一分钟的第21秒时熄灭这盏灯,例如在,2019年6月5日07点59分9秒时,灯会亮起,2019年6月5日07点59分21秒时,灯会熄灭,等待下一分钟的第9秒时,再次点亮,一次次循环。
小A:老板还挺懂!嘿嘿……小的退下,7天内保证完成。
老板:7天!!!不行啊我赶时间去和客户吹牛,给你10分钟,代码不能超过10行,不行话,卷铺盖走人……
小A默默地掏出了珍藏多年的板砖,怒吼道:欺人太甚,今天你要是不给演示一下,10分钟内,10行代码完成项目,一砖两命!!!
老板见此状,屈服于小A的淫威,为小A开始演示。
演示过程
-----------------------
老板颤颤巍巍的拿出来从某宝上源地工作室购买的uPython板子,连接好USB线,
pyboard_usb_micro.jpg
叮咚电脑响了一下,生成了一个U盘,老板迅速地打开U盘,找到其中一个叫main.py的文件,双击用记事本打开了(其实用其他专业脚本打开更好,老板为保命节省时间,就没切换软件)
噼里啪啦敲入如下代码
::
        pyb.RTC().datetime((2014, 5, 1, 4, 13, 0, 0, 0))  
        while True:
          time1=int((((str(pyb.RTC().datetime()))[23:25]).replace(',','')))
          if(time1==9):
            pyb.LED(2).on()
          if(time1==21):
            pyb.LED(2).off()
          pyb.delay(500)
正好8行代码,然后,老板激动的手,点击了保存(相对于传统意义烧写程序),板子上的LED提示保存完毕,上电重启(按复位也行),两人捏着手表读秒,变态的应用实现了!!老板的狗命终于保住了,小A流下了悔恨的泪水!!说道:老板我要学使用Python语言在STM32硬件平台之上实现高效编程与快速应用,人生苦短,我也要用Python……代码分析(很重要奥,建议仔细观赏)
-----------------------  
同志们会发这个段代码就像一段程序片段,不像一个应用的全部代码,其实不然,这确实是一段完成度很高的程序工程,如果使用C语言编写这个应用的话不算加载的官方库函数,代码保守估计起码在300行以上,代码包括各种包含声明,变量声明,外设初始化,晶振配置程序,应用代码等,短短的8行代码就能实现,这就Python的魅力,人生苦短,快用Pyhton 诠释的一点也没有错。
pyb.RTC().datetime((2014, 5, 1, 4, 13, 0, 0, 0)) 这段代码是给uPython授时,就是校表,授时完成后就开始走表了
你会发现这段代码上没有什么函数声明啊,变量什么啊,这就是Python的规则了,Python语言的一个原则就是用的时候你再声明,其实写这段代码的时候就在声明了,这个C语言不一样,多说一句,C语言讨好硬件这个“傻子”,Python是把人当“懒货” ,回到这行代码上,告诉板子现在地球时间是 2014年5月1号,星期4,13时,0分,0秒,0毫秒,校准时间,其实Python语言也是有包含声明的,这段代码也可以这样写,
from pyb import RTC
rtc = RTC()
rtc.datetime((2014, 5, 1, 4, 13, 0, 0, 0))
是不是很容易理解了,为了节目效果我们完全可以用这段代码代替
pyb.RTC().datetime((2014, 5, 1, 4, 13, 0, 0, 0))
python语言也是可以加载外部函数的,这有点涉及Python的知识,建议查阅其他详细资料,你只要明白 pyb. 有这个东西就不用 from……import……了。
while True:
没什么可讲的,循环
time1=int((((str(pyb.RTC().datetime()))[23:25]).replace(',','')))
这行代码NB了,睁大眼睛,你可能永远不会在C语言中见到的神迹,咱们一点一点分析这行代码,
pyb.RTC().datetime()意思是喂,板子现在什么时间?
板子会给你如下答复
(2014, 5, 1, 4, 13, 0, 0, 0)
前面加个STR转换,好做处理数据,咱们的目的是提取多少秒了,使用[23:25]截取秒数数值,这里有个问题就是这个23到25这个可能在单位数时保留逗号,例如((2014, 5, 1, 4, 13, 0, 7, 0))  截取的数据是7,逗号也不是数啊,也没有用啊,就用replace(',','')将逗号去掉,这样你time1 得到数据就是 0~59的到时秒数了,Python处理数据流简直是老狗一枚,C语言哭晕在厕所~~~
          if(time1==9):
            pyb.LED(2).on()
          if(time1==21):
            pyb.LED(2).off()
          pyb.delay(500)

这段代码,我相信就不用过多解释了吧!各位老板 都是明白吧!

接下来我会在贵论坛,相继发布Python语言如何在STM32平台上各种应用和各种问题答疑,往请各位老板多多捧场,关注,打赏,投币

评分

参与人数 1 ST金币 +10 收起 理由
STMCU + 10 多谢分享

查看全部评分

收藏 4 评论34 发布时间:2019-6-6 11:57

举报

34个回答
源地1号 回答时间:2019-6-10 19:37:14
huangxuejia-292 发表于 2019-6-10 17:16
应用层确实可以考虑用python,或者说,用脚本。开发速度快,更新灵活。但效率很低。
如果真正做项目,除了p ...

STM32可以使用Python是硬件性能过剩的产物,确实牺牲了些效率,但是开发应用更加顺滑,就像电脑一样,新电脑一般都是装个系统,在系统之上运行自己应用,使用这一套系统可以入门Python ,熟悉电路知识,类似 Arduino学习和使用,一些应用确实可以使用Python开发,简单快速
zhdzhd-174422 回答时间:2019-6-6 21:55:17
这段子牛逼啊
五哥1 回答时间:2019-6-7 00:28:47
谢谢分享
ldptest 回答时间:2019-6-7 11:28:10
牛,支持其他板吗?
源地1号 回答时间:2019-6-7 21:41:57
ldptest 发表于 2019-6-7 11:28
牛,支持其他板吗?

python语言实现是将一个类似于系统的固件(MicroPython)植入到STM23芯片中,在此基础上实现Python语言编程控制,目的是高效编程,快速应用,基本上STM32F4系列以上的都是可以适配这个系统的,不要理解为任何STM32系列,或者没有植入这个系统的STM32就能用Python了,谢谢支持—源地工作
MrJiu 回答时间:2019-6-7 21:42:21
看起来很牛逼,问题就来了,点亮个灯,驱动外设没啥问题。。。问题是如何把这些东西变成项目,这就难度来了!!!
源地1号 回答时间:2019-6-8 10:28:48
MrJiu 发表于 2019-6-7 21:42
看起来很牛逼,问题就来了,点亮个灯,驱动外设没啥问题。。。问题是如何把这些东西变成项目,这就难度来了 ...

只有明确这一点,所有的外部输入无非就是 串口,iic spi,can,ADC,GPIO, 并口 对外输出无非是 串口 iic spi,can,dac,GPIO,并口  对它们简单应用了,不论什么实际应用  编程就可以实现高效编程,快速应用
海迹天涯 回答时间:2019-6-10 11:22:02
卧槽,牛逼啊感觉学起来
huangxuejia-292 回答时间:2019-6-10 17:16:13
应用层确实可以考虑用python,或者说,用脚本。开发速度快,更新灵活。但效率很低。
如果真正做项目,除了python,也可以考虑lua。
如果要效率,甚至可以内置tcc。
或者是考虑动态加载。

但是没有那个公司制作应用吧?
嵌入式不就是强硬件相关吗?
我不认为嵌入式会出现一套硬件标准。
1234下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版