矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 15476|回复: 65

STM32确实好东西

[复制链接]
     
发表于 2020-2-27 23:55:10 | 显示全部楼层 |阅读模式
本帖最后由 iffi123 于 2020-2-28 00:13 编辑

功能强大, 因为以前玩单片机是很早的时候,那时只有intel原产的51,和pic, 功能单一。

这次接触STM32, 感觉架构还是很不错,学起来很顺手,没有别扭的感觉,这大概就是设计好的特点吧,功能挺全的,各种中断, DMA什么的,片上外设多, 较自由,发挥空间大

这几天玩的片上ADC和DMA,  转换完直接传到内存,都不用操心,很好,  试验了5000个ADC值, 一次性DMA到数组里,  占用10k的内存空间,CBT6才20k啊,哈, 另外ADC内置温度传感器和基准电压,再加个线连到电源,单一个最小系统就可以玩多通道采集

还有定时器,功能也很强大, 但也比较复杂,寄存器配置很多, 逻辑关系要理顺,不然会晕乎,核心计数器支持内外时钟,还支持多样的输入触发和输出信号, 再加上扩展的输入捕捕获和输出比较模块, 可以把定时器, ADC, DMA, 中断搭积木般的组合

因为想多了解一些底层的工作机制,最近用的比较多寄存器操作,库函数是辅助,主要了解库函数实现的功能是通过设置哪些寄存器哪些位实现的,一般折腾完寄存器,我会重写一个库函数版本备用。

不知道现在的51系发展到什么程度,还有pic的8脚甚至6脚的超小cpu也是非常有吸引力的,等我stm32学有所成,再了解了解

评分

5

查看全部评分

     
发表于 2020-3-4 13:46:12 | 显示全部楼层
我觉得用库函数是有好处的,一个重要原因是,底层的东西复杂了,或者,很难掌控,或者,底层变化很快。有了库函数,就是对底层的封装,就可以从指令集脱离出来了,把经历用在算法上了。应该对使用者简单了。现在windows下编程,不也是用库吗?
win32 api。函数调用的方法;又不过瘾,搞出个.net,封装成了对象调用。结果搞的浮肿了,如果不是有自动完成关键字功能,估计,都成了打字高手了。
回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2020-2-28 13:25:04 | 显示全部楼层
本帖最后由 iffi123 于 2020-2-28 13:53 编辑
amo 发表于 2020-2-28 12:24
有库就别折腾寄存器了
库本身就是人家几十人团队折腾N年才完善到这个程度的,先建模,然后用各种脚本批量 ...


你看完库的源码就知道,库并没那么神奇,但更方便,如果开发大的项目用库减少出错几率,排查也更容易,个人玩的就无所谓

另外有些功能库里没有单独提供,比如定时的输入捕获, 如果你想在初始化后,改变极性(上/下升沿), 库里没有单独这个功能的函数,你只能重新初始化一遍,显得非常没有必要,寄存器的话,修改一个标志位就搞定,  实际编程,我两个混合使用,并非排斥库,只是学习阶段倾向于寄存器


回复 支持 1 反对 0

使用道具 举报

     
发表于 2020-2-28 00:02:11 | 显示全部楼层
楼主的确是这方面的·发烧友呀!
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 03:39:59 来自手机 | 显示全部楼层
STM32初学最难的地方就是如何正确配置基础,搭建合理的平台
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 08:17:35 | 显示全部楼层
STM32确实好,价格便宜指标高
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 08:18:22 | 显示全部楼层
单片机好上手吗?它能不能代替PLC?与PLC相比较有什么优缺点?
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 08:44:02 | 显示全部楼层
w8899 发表于 2020-2-28 08:18
单片机好上手吗?它能不能代替PLC?与PLC相比较有什么优缺点?

好像PLC,就是单片机+输入输出扩展电路+接口做的吧
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-2-28 09:50:45 | 显示全部楼层
w8899 发表于 2020-2-28 08:18
单片机好上手吗?它能不能代替PLC?与PLC相比较有什么优缺点?

单片机入门门槛不高
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 10:40:20 | 显示全部楼层
iffi123 发表于 2020-2-28 09:50
单片机入门门槛不高

就是岁数大了,记忆力不行了
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 10:57:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 11:38:18 | 显示全部楼层
之前用了多年stm32,后来工作需要用Linux, qt, 现在又要学安卓了。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 12:24:49 | 显示全部楼层
有库就别折腾寄存器了
库本身就是人家几十人团队折腾N年才完善到这个程度的,先建模,然后用各种脚本批量生成这么命名规范逻辑严谨的库。个人去搞,绝无可能做得出。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 12:41:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2020-2-28 15:37:36 | 显示全部楼层
iffi123 发表于 2020-2-28 13:25
你看完库的源码就知道,库并没那么神奇,但更方便,如果开发大的项目用库减少出错几率,排查也更容易, ...

你如果认为“库没那么神奇”,说明你做过的项目太少,或者做过的基本都是同一类型略作修改。
不用写一个完整的库,只要在现有库基础上,参考其规范加入你所说的几个新功能,要求能无缝整合一起,别人不需要看手册就能直接用你的API……然后你就知道ST的库到底牛在哪里了

库本身就隐含了统计、建模、抽象,如果需求非常冷门,当然没必要为其独立出个API。如果什么都塞进去,这样的库就跟没有一样,还不如直接读写寄存器。以你提到的捕获为例,不少应用都会要求先捕获一次,判断范围,再修改参数逼近,获得最佳的精度;还有的需要根据捕获结果散转,如果能提供钩子岂不是效率更高?——但这些需求,用一个“APP”来做更合适,没必要都凑到一起。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-2-28 16:01:21 | 显示全部楼层
amo 发表于 2020-2-28 15:37
你如果认为“库没那么神奇”,说明你做过的项目太少,或者做过的基本都是同一类型略作修改。
不用写一个 ...

初始化后根据情况修改某些参数,比如极性,是非常正常的操作,没什么大惊小怪的,库本应该让人更方便使用,而不是限制使用

库实现的效果其实是傻瓜式操作,越傻瓜越不容易出错,但世上没有把所有好处全占上了的,库有这些好处,必然也要付出其它的代价,比如臃肿,不信你可以看下最最常用GPIO_Init源码, 搞了一堆,if else语句一层层套,编译出来接近90-100个字节,实际上如果用寄存器,一条语句几个字节就搞定了(其实就是设置CRL或者CRH的其中4个位), 我举这个例子为了说明库为了保证傻瓜式的操作而付出的代价。

库有好处,但没必要神化,  至于库对你的重要性,要看你的项目类型,前面我也说过,如果是比较大的项目,纯库操作也可以理解, 具体到个人diy,就没必要强求,怎么方便怎么来,基本不可能有其它人来维护自己的代码, 做好注释,日后翻来修改也不难。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-3-28 23:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表