矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 8993|回复: 55

STM32的C语言写法和C51差不多!

[复制链接]
     
发表于 2019-12-29 23:04:38 | 显示全部楼层 |阅读模式
原来C语言是通用的,两者写法差异不大,就是头文件比较多!
QQ截图20191229225051.png
     
发表于 2020-1-8 12:57:30 | 显示全部楼层
iffi123 发表于 2020-1-8 10:15
如果程序不大,自己写写,对了解stm32有帮助,初学者用寄存器操作有助于了解芯片, 熟练后稿大的再用库函 ...

我和您看法恰好相反,哈哈。其实很多人都有个执念,觉得对底层要特别了解才行,。学过51单片机的大都被前辈推荐学汇编,为的是了解“单片机的工作原理”,学过stm32的大都被前辈推荐先学寄存器,熟练了再用库,为的也是了解“单片机的工作原理”。然而有必要那么了解吗?我觉得不是每个人都需要那么了解,单片机是工具,能实现自己的目的就行。用库能省去配置寄存器的繁琐,用CubeMX自动生成代码能省去配置初始化的繁琐,提高底层配置的效率,专注于上层的功能,省时省力有何不好?

当然我上面说的只是我个人的想法,主要针对电子爱好者,不包括相关从业者或者就是热爱单片机的人,而且用库也绝对不代表就可以对寄存器一无所知。
回复 支持 1 反对 0

使用道具 举报

     
发表于 2019-12-30 23:55:35 | 显示全部楼层
w6955 发表于 2019-12-30 16:56
51基本内存极小,编译器肯定限制很多。内存是个很难伺候的资源,51编译器不得不仔细处理。我没写过编译程 ...

51那个年代,代码都不长, 用汇编是可以的, 对端口直接位操作,很方便, 当然stm32也搞了个位段区和别名区映射,也能实现
回复 支持 1 反对 0

使用道具 举报

     
发表于 2019-12-30 08:53:50 | 显示全部楼层
理论上C语言是与平台无关的高级语言;
有些人劝导单片机初学者学习汇编,说这是误导初学者有点过分,但确实把他们引入了一条崎岖之路了;
鄙人觉得,用C就可以解决95%的单片机问题;如果你用C不能完成底层的操作,再研究汇编不迟,何况此时学汇编会觉得简单些;

学习单片机不能出成绩不是用什么语言的问题,而是具体应用单片机的其它问题;比如,你会设计电路吗?

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

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

使用道具 举报

     
 楼主| 发表于 2019-12-30 00:10:25 来自手机 | 显示全部楼层
矿坛铁粉 发表于 2019-12-29 23:28
stm32基本是标准C,51受架构局限对标准C不能完全支持,同时扩展了一些保留字。比如stm32可以在函数里任何位 ...

原来还有这些问题!
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 00:44:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 00:53:24 | 显示全部楼层
位域也是个麻烦问题.51貌似只支持8bit的位域,16的不知道支持不,忘记了,反正32位的位域不支持,很是麻烦.
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 01:08:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 09:58:18 | 显示全部楼层
51就是简单应用,复杂的就上树莓派吧,没操作系统的野鸡飞不高。关键问题是世界上多数应用都是简单的。7楼说得对,关键是单片机以外的电子知识、电路知识,语言及单片机都是工具,既然是工具就存在以外的目标。说一下C语言没那么难学,学好也没那么容易,单片机那点C真的简单。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 11:51:40 来自手机 | 显示全部楼层
哈哈!楼主已经开始学习了,我的还没签收。
这样看来,stm32用起来比51还要方便(没有那么多奇异的老式结构限制)

楼主现在已经搞定开发环境的架设了吗
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 11:52:24 | 显示全部楼层
矿坛铁粉 发表于 2019-12-29 23:28
stm32基本是标准C,51受架构局限对标准C不能完全支持,同时扩展了一些保留字。比如stm32可以在函数里任何位 ...

任意位置定义变量那是C99标准的问题,跟C51、STM32无关。
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 12:21:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-12-30 12:29:07 来自手机 | 显示全部楼层
无敌吴刚 发表于 2019-12-30 11:51
哈哈!楼主已经开始学习了,我的还没签收。
这样看来,stm32用起来比51还要方便(没有那么多奇异的老式结 ...

目前已经搞好烧写软件了,编译软件安装好了,可是目前还不太懂用,正在研究!
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 12:44:19 | 显示全部楼层
书到用时 发表于 2019-12-30 12:21
51可能永远都不会支持C99

那是编译程序设计的事与MCU毫无关系。
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 16:17:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2019-12-30 16:56:22 | 显示全部楼层
书到用时 发表于 2019-12-30 16:17
不能说毫无关系吧。就以任意位置定义局部变量这个特性为例,假定有如下程序:
void func1(void)
{

51基本内存极小,编译器肯定限制很多。内存是个很难伺候的资源,51编译器不得不仔细处理。我没写过编译程序,对此缺乏直接了解,很困难是肯定的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2024-4-26 22:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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