用一种魔性的方法学STM32
0x000000002017/07/18极客DIY IP:陕西
学习STM32有一段时间了,不得不说STM32真的很强大,无论是内核还是外设。
当然我现在只是皮毛罢了,也就是点点流水灯这种样子。
对于STM32,一般人是这样写的:
1.png
而我使用了不正常的写法:
Capture1.png
能写出来还真是不可思议呢,反正说难不难,说简单不见得。写了两个实验工程,尝试了GPIO,USART,ADC,DAC。

attachment icon STM32.7z 97.69KB 7Z 38次下载
其中那个DAC实验我是想用STM32接收串口数据流放音乐来着,可是现成串口助手不支持那么做,但是想自己编程操作串口有很大困难,所以暂时没办法测试了。
来自:综合交流区 / 极客DIY
23
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
0x00000000 作者
6年9个月前 IP:海南
836701
引用 张静茹:
楼主的意思是 汇编操作寄存器更加简洁明了吧,对于不懂汇编的人来说,直接用C语言缺失了一点透明感,对于懂汇编的人来说,能直接看透 C语言 库函数的封装直接看到内存操作
其实就是这个意思,同时,在某些地方汇编是有用的。比如某些算法的优化。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
6年9个月前 IP:海南
836702
引用 amo:
建议不要装这种B……
点开人家C例程的反汇编窗口,你会发现一点便宜都没占到
其实是占到了,那库编写有多大,用汇编又有多大?我这些文件只有1KB多一点的指令大小,其中中断向量表就占了不小的空间。
而且如果汇编没有用,为什么ST官方的编程指南是讲解汇编指令为主的?为什么编译器有内嵌汇编功能?为什么某些Cortex-M3的开发书籍用了不小的篇章讲解汇编编程方法?
也许你会说开优化可以提高代码密度和效率,不过编译器不是人,只会按照相对固定的方式汇编高级语句,而自己可以根据程序的实际要求组织指令达到目的。而且有的代码开了优化就不能正常工作了。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
6年9个月前 IP:海南
836703
引用 rb-sama:
用ARM汇编操作寄存器偏移地址能写出来,似乎并没有什么不可思议的地方?
ST的官库只是用struct指针的方式写了而已。
你会错意了,我的意思是原来我觉得汇编很难,对我来说基本不可能,不过现在我感觉其实也没有那么难。
其实要不是正好有《微机原理》这门课,我说不定还在玩MCS-51,就算是用,也会直接用C。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
6年9个月前 IP:海南
836761
引用 amo:
参考你的程序,找了个库函数例程里类似的点灯例程,编译结果如下图所示,看你占了什么便宜:
使用库函数的点灯例程.png
呵呵,你那只是简单的GPIO操作,就占了那么多东西。我的一个工程,里面有GPIO,AFIO,USART,ADC的使能和调用,还有简单的低通滤波算法,才比你这个多了100多bytes,而且我要是愿意,完全可以再牺牲可读性再优化掉50bytes没问题。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
6年9个月前 IP:海南
836762
引用 amo:
参考你的程序,找了个库函数例程里类似的点灯例程,编译结果如下图所示,看你占了什么便宜:
使用库函数的点灯例程.png
而且那么简单的一点东西,看不出什么的。以后程序大了,操作复杂了,差距就有了。而且不见得一定就在空间取胜,有时候是速度快了。
不然怎么都说ASM效率高,或是体积小呢。
反正既然存在,既然还有被提起,肯定还有很重要的用处,你就算在怎么斗嘴都改变不了事实。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
6年9个月前 IP:海南
836840
引用 牛逼大仙:
想想如果以后上班了,你跳槽了,同事接手看不懂汇编肯定会说MMP~
为啥我会爆粗口?
因为前一阵帮忙填坑坑死了。
我只是为了娱乐而汇编,深层次了解原理罢了。汇编对我不是负担,就像那些《英雄联盟》之类的游戏对于普通人怎么玩都不累那样,对于我就是玩,就是消遣好吗。要是写代码为了工作,我当然会用库函数了。但自己私底下的娱乐,没有人管得着吧?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
6年9个月前 IP:海南
836841
引用 single2339:
不知道楼主是否是学生,学生就无所谓了。
鄙人搞了十多年软件工程相关工作,坦率讲所有工作里面最头痛的就是阅读别人写的阅读性差的代码。

高级语言的发展目的就是让人能够更好地阅读代码,提高生产效率,单纯的……
我只是为了娱乐而汇编,深层次了解原理罢了。汇编对我不是负担,就像那些《英雄联盟》之类的游戏对于普通人怎么玩都不累那样,对于我就是玩,就是消遣好吗。要是写代码为了工作,我当然会用库函数了。但自己私底下的娱乐,没有人管得着吧?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
0x00000000
进士 学者 机友 笔友
文章
75
回复
758
学术分
1
2013/07/27注册,1个月11天前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}