标题: 一个53岁单片机初学者的心得 [打印本页]

作者: Hephaestus    时间: 2021-2-6 17:36
标题: 一个53岁单片机初学者的心得
一直业余爱好电子,都是做些小打小闹的DIY,想学单片机一直学不会。现在家庭琐事少了,也有闲功夫了,打算开始学习单片机。

开始学当然学STM32了,选了资源最少的STM32F030F4,有16k flash和4k ram,在现代单片机里面算是非常袖珍的,就是想看々这个螺蛳壳里面到底能做出什么道场?买了5块030F4最小开发板,还买了ST-Linkv2,USB转TTL(PL2303),就这三块板子开始搞吧!

资料嘛,从ST网站下载了STM32F030 Datasheet和RM0360——STM32F030 & 070 Reference manual两分文档,这个很容易找到,我就不上传了。然后就是The Definitive Guide to the ARM Cortex-M0这本书,上传一下。有了这三份文档,加上从ST那里下载的Standard Peripheral Lib,就开始撸代码了,有什么进展跟大家分享。
The Definitive Guide to the ARM Cortex-M0.pdf (19.28 MB, 下载次数: 134)


作者: hhdsdy    时间: 2021-2-6 23:05
有毅力有决心,赞一个!如果是我,只会选用STC51单片机,资源多学起来简单多了
作者: TTQ001    时间: 2021-2-7 07:42
支持您的努力! 感谢您为许多努力学习单片机的人们树立了榜样。
作者: cheney03    时间: 2021-2-7 08:40
精神可嘉,活到老学到老!
作者: glinfei    时间: 2021-2-7 08:40
业余的,能看原版手册玩,很厉害了,期待见识一下成果。
作者: munuc_w    时间: 2021-2-7 08:43
学习STM32方向是对的,功能上比51强的太多了,后续拓展空间也大。不必看汇编,直接用C就可以了。
作者: myemcu    时间: 2021-2-7 09:11
直接上32的都是猛人。。
作者: wwh2382    时间: 2021-2-7 10:54
经验值得借鉴
作者: 海阔天空8    时间: 2021-2-7 11:10
“想学单片机一直学不会”?深有同感。一直是抱着电阻电容等硬件的思维方式不放,几十年了毫无进展。你又使我燃起了希望的火花!我什么软件的知识都没有就玩不转最简单的89c2051了吗?
作者: wfqxgw    时间: 2021-2-7 13:30
我也是今年开始从C51转STM32F10X系列.小弟今年36
作者: dzbj    时间: 2021-2-7 20:48
老头学单片机最大的麻烦是老记不住 要命了 一看就明白 一回头 连想看的是什么都忘记了 我日啊~~~~ 亲身经历
作者: rayin    时间: 2021-2-8 08:45
我一直在搞51, stm32也是刚开始搞,买了一块512K的STM32F103ZET6 和一块64K的STM32F103C8T6的也开始STM32的单片机学习之旅。
作者: fredlv    时间: 2021-2-8 16:29
一同见证,共同学习。刚刚决定把积灰的书拿出来翻翻。。。还是想把他学好,学精。、、
作者: 人人学会单片机    时间: 2021-2-8 18:39
dzbj 发表于 2021-2-7 20:48
老头学单片机最大的麻烦是老记不住 要命了 一看就明白 一回头 连想看的是什么都忘记了 我日啊~~~~ 亲身 ...

不需要去死记硬背 灵活计算才是硬道理 欢迎学习 框架式编程方式
作者: 33943417    时间: 2021-2-8 23:34
我从去年9月开始学51,目前正在学计算器、秒表、1602、AD转换等程序。在原单位干过一段时间研发,负责需求和总体设计,也涉及了一些PLC,电路和软件别人搞,现在在家休息2年了,自己亲自搞,2020年先把模电、数电看了一遍,又看了protel 99se ,可惜都只看了理论,准备下步学完了51开始理论联系实际,搭电路,修家电,再过一遍数电、模电,画简单的电路板,然后学stm32。
作者: justinchill    时间: 2021-2-9 07:26
只要想学,什么时候都不算晚!一起加油
作者: a4732710    时间: 2021-2-9 08:39
要有目标,造个火箭🚀,开发个无人机,打造梦想智能家居等动力。学才能精,不是控制一个流水灯,抄编成功AD模电,就算成功的。
作者: dj3365191    时间: 2021-2-9 13:10
只要肯学什么时候都不算晚,肯德基老板70多岁才创的业
作者: zuiqf1978    时间: 2021-2-9 23:24
业余极正在加油中!
作者: cn_zhx    时间: 2021-2-10 10:20
支持!佩服!
作者: Hephaestus    时间: 2021-2-13 22:10
搞了一整天,连灯(PA4)都没点亮,好失败的赶脚。大家帮我看看代码。

f030r092.7z

358.87 KB, 下载次数: 30


作者: faves    时间: 2021-2-14 11:15
请问你是用哪个软件写的代码?我也学学
作者: 王秋冬    时间: 2021-2-14 12:32
同感,我也五十多了,自从看到这个论坛,就开始学习,到现在还没有一点点进展,坛友说的对,转眼就忘记的,继续吧。
作者: Hephaestus    时间: 2021-2-14 14:26
faves 发表于 2021-2-14 11:15
请问你是用哪个软件写的代码?我也学学

RealView MDK v5.26
作者: hhh402    时间: 2021-2-18 13:03
只是业余先学51单片机好一点,入门简单性能够用,STM32复杂很多,很多功能也用不不上,比如去菜市买菜开个电动车去就好,如果开个小车去停车都是个麻烦事,不是越高级越好
作者: tyw55555    时间: 2021-2-18 15:15
学到老活到老,学无止境,继续加油
作者: aide51    时间: 2021-2-19 10:39
支持楼主的精神,值得学习
作者: aygc    时间: 2021-2-19 13:48
51单片机虽然简单,但是仿真起来麻烦,STM32用C语言相对设置寄存器相对有点麻烦,但是仿真器成本比较低。我也是从纯硬件再向软件过渡,虽然岁数大了,但是也要活到老学到老。支持楼主
作者: 中科爱思    时间: 2021-2-19 15:11
爱好是最大的驱动力,支持楼主
作者: nanducool    时间: 2021-2-19 15:53
STM32使用C语言+keil开发工具
作者: 540010224    时间: 2021-2-19 15:57
我也是刚开始学STM32,看起来还需要多努力,谢谢楼主分享
作者: zmc5354    时间: 2021-2-19 16:26
STM32刚起步!
作者: ww007    时间: 2021-2-20 11:06
俺40+,以前喜欢这个,但一直没耐心学。今年寒假,孩子学校有个小作业,让俺又捡起这个小东东。。每天白天忙,只有晚上孩子睡了,才有一个多小时的空闲时间学习。。。不过,感觉很快乐。。
作者: 单片机研究协会    时间: 2021-2-20 12:55
ST LINK不好用,建议用J LINK
作者: 网络孤客    时间: 2021-2-20 14:02
支持楼主大哥,建议用STM32F1,在加cubemx会省心不少。
作者: 阿波罗AUDIO    时间: 2021-9-17 20:58
新来的,这几天才注册论这个论坛——悉才看到还有这么几个老头想学单片机
哈哈,没有最老,只有更老,吃到老,学到老。时代在前进,不能让年轻人看着我们笑话!
本人过几个月就要满60,才初入学
作者: daemondong    时间: 2021-9-18 10:38
建议用STM32cube开发,免费,方便。
作者: Hephaestus    时间: 2021-9-18 19:12
网络孤客 发表于 2021-2-20 14:02
支持楼主大哥,建议用STM32F1,在加cubemx会省心不少。

CubeMX生成的代码可以选LL库或HAL库,看了一下LL库是可以用的,很不错。但是HAL库就是一坨狗屎,上街找个二傻子培训半天都写不出这么垃圾的东西。
作者: ly1972001    时间: 2021-9-19 08:14
海阔天空8 发表于 2021-2-7 11:10
“想学单片机一直学不会”?深有同感。一直是抱着电阻电容等硬件的思维方式不放,几十年了毫无进展。你又使 ...

有电路基础都能玩转单片机。
作者: ly1972001    时间: 2021-9-19 08:17
关注楼主。能帮的一定帮。程序最好不要下载,直接贴出来方便看。
作者: ly1972001    时间: 2021-9-19 08:50

    LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_4);
    LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_4);
从这个看来,PA4输出低电平把灯点亮,应该没问题。这两句间最好加个时间间隔。
作者: 王披风    时间: 2021-9-23 14:14
C51入手还在入门苦苦挣扎
作者: hjmhunter    时间: 2021-9-23 14:45
我51没怎么学,也上了STM32,ST的东西确实比较好用,特别是后面的图形设计软件+HAL库,发现做些简单功能太容易了,一起加油
作者: pq1972    时间: 2021-9-23 14:51
俺也50了,刚刚开始学,哎就是有点难啊
作者: 00云梦泽00    时间: 2021-9-23 21:39
老哥 玩的话 用51吧   
作者: slf252    时间: 2021-9-24 09:06
人的边界绝对不是年龄,感谢老大哥分享
作者: univers    时间: 2021-9-27 21:31
给你点赞了!长者
作者: zyluglugl    时间: 2021-9-28 07:48
兄弟,进展如何了!
作者: 没啥好名    时间: 2021-10-13 09:09
支持,精神可贵,这也正好鼓励新一代青年好好学习努力,一起加油
作者: 没啥好名    时间: 2021-10-13 09:10
支持,精神可贵,正是新一代青年学习的地方
作者: shumivan    时间: 2021-10-13 09:12
有51基础的话,可以玩STM32,没51基础或许稍微有些吃力。
作者: HAPPY3    时间: 2021-12-1 11:27
同年龄组的人,为生计,半路出家,搞51
作者: yaoyao2022    时间: 2022-5-15 21:54
tid_phaseB = osThreadNew(app_main, NULL, NULL); 这两个线程先注释一个看 灯是否有翻转
作者: chinawph    时间: 2022-5-19 16:11
yaoyao2022 发表于 2022-5-15 21:54
tid_phaseB = osThreadNew(app_main, NULL, NULL); 这两个线程先注释一个看 灯是否有翻转

一年多了你还在回帖,服了.

入门还是用51好点,现在STC的51芯片也是很强的,可以做很多东西.
作者: dalaoshi    时间: 2022-5-19 17:15
男怕入错行,女怕嫁错郎,学东西最怕入错门,入了门后四周无人,一片茫然。

点燃一颗LED本来就和家里开一盏灯一样,直接了当,搞成智慧型高科技房屋后,要开灯得有遥控器,要有口令,口令还要有语法,但好处就是功能多,技术高,价钱贵,这STM32大概就是这么样的东西,由于功能太多,太复杂,记不了就得C语言帮忙,只要说要开灯,就由编译器去开,至于编译器是怎么给指令让灯打开的,不必知道,但写编译器的肯定得知道,要不然灯这么会开了?这就是高级语言了。所以单纯只是要学开灯,就用51学学看,真学会了,立志要学会开很多灯,要很多样式,那就学STM32,太复杂了,就让C叔叔帮忙,只要跟C叔叔说要开很多灯,什么样式,灯就开了。

作者: hhh402    时间: 2022-5-19 17:26
自己玩建议学51,STM32是比较快,但是太复杂,语句非常长需要英语比较好才行。打个比方,51就像电单车,STM32就像摩托车,日常使用电动车足够,如果跑长途也没有多少人用摩托车,大部分都用汽车。
作者: yty666    时间: 2022-5-19 20:43
我也是初学者,一起努力
作者: 张879    时间: 2022-11-22 23:57
看到老大哥有燃起了学习的热情
作者: akii    时间: 2022-11-23 06:13
只要想學,什麼時候都不算晚!一起加油!  期待您努力的心得分享 !
作者: esslitao    时间: 2022-11-23 08:16
阿波罗AUDIO 发表于 2021-9-17 20:58
新来的,这几天才注册论这个论坛——悉才看到还有这么几个老头想学单片机
哈哈,没有最老,只有更老,吃到 ...

老弟你好。我已经60岁了。今年4月份退休了。现在还在职,一直做单片机研发工作。这个行业真的是干到老,学到老。一起加油吧!
作者: esslitao    时间: 2022-11-23 08:26
大家好!都说完了吗?哈哈~都比我小啊,整60岁的在这呢。我今年4月份办理的退休手续,现还在职。一直从事单片机研发工作。看到还有这么多大龄的单片机爱好者,我很高兴。大家一起努力吧。我的单片机学习之路心得是:爱好是最大的动力,万里长征始于足下。把你的开发板连好电脑,通上电,进入神奇的让人不能自拔的单片机世界吧!
作者: Longan.Wang    时间: 2022-11-23 16:44
学单片机就是要不断地去折腾,需要耐心!!!
作者: 宫少廷    时间: 2022-11-24 10:54
为你点赞
作者: nanstar    时间: 2022-11-25 15:30
现在有很多开发板,也有很多例程,学习途径还是很多很方便
作者: lmn2005    时间: 2022-11-25 17:16
一开始就从STM32 入手,一步到位,给个赞!
作者: lanshenlan    时间: 2022-11-26 09:54
活到老,学到老,大家一起进步
作者: ~mTouch    时间: 2022-11-29 16:26
海阔天空8 发表于 2021-2-7 11:10
“想学单片机一直学不会”?深有同感。一直是抱着电阻电容等硬件的思维方式不放,几十年了毫无进展。你又使 ...

学习C语言,一步到位。然后就是配置单片机。不复杂其实硬件才复杂
作者: 123bbs    时间: 2022-11-30 08:26
太厉害了  学习从来不会被年龄束缚
作者: shanghanlin    时间: 2022-12-2 19:51
活到老学到老,我辈楷模
作者: hhh402    时间: 2022-12-3 11:43
业余学单片机只学51就好,学STM32没有必要,STM32比51快一点没有实际意义,51做不了的STM32也做不了,需要大量数据处理是最好用上位机。
作者: Hephaestus    时间: 2022-12-3 12:30
ly1972001 发表于 2021-9-19 08:17
关注楼主。能帮的一定帮。程序最好不要下载,直接贴出来方便看。

我把点灯程序贴出来你帮我看看,已经好用了。
  1. #include <RTL.h>                      /* RTX kernel functions & defines      */

  2. OS_TID tsk1;                          /* assigne identification for task 1   */
  3. OS_TID tsk2;                          /* assigne identification for task 2   */
  4. OS_TID tsk3;                          /* assigne identification for task 3   */
  5. OS_TID tsk4;                          /* assigne identification for task 4   */

  6. U16 counter1;                         /* counter for task 1                  */
  7. U16 counter2;                         /* counter for task 2                  */
  8. U16 counter3;                         /* counter for task 3                  */
  9. U16 counter4;                         /* counter for task 4                  */

  10. __task void job1 (void);
  11. __task void job2 (void);
  12. __task void job3 (void);
  13. __task void job4 (void);

  14. /*----------------------------------------------------------------------------
  15. *   Task 1:  RTX Kernel starts this task with os_sys_init (job1)
  16. *---------------------------------------------------------------------------*/
  17. __task void job1 (void) {
  18.   os_tsk_prio_self (2);               /* higher priority to preempt job3     */
  19.   tsk1 = os_tsk_self ();              /* get own task identification number  */
  20.   tsk2 = os_tsk_create (job2,2);      /* start task 2                        */
  21. //  tsk3 = os_tsk_create (job3,1);      /* start task 3                        */
  22. //  tsk4 = os_tsk_create (job4,1);      /* start task 4                        */

  23.   while (1) {                         /* endless loop                        */
  24.     counter1++;                       /* increment counter 1                 */
  25.     os_dly_wait (50);                  /* wait for timeout: 5 ticks           */
  26.     ToggleLED();
  27.   }
  28. }

  29. /*----------------------------------------------------------------------------
  30. *   Task 2 'job2':  RTX Kernel starts this task with os_tsk_create (job2,2)
  31. *---------------------------------------------------------------------------*/
  32. __task void job2 (void) {             /* higher priority to preempt job3     */
  33.   while (1) {                         /* endless loop                        */
  34.     counter2++;                       /* increment counter 2                 */
  35.     os_dly_wait (10);                 /* wait for timeout: 10 ticks          */
  36.   }
  37. }

  38. /*----------------------------------------------------------------------------
  39. *   Task 3 'job3':  RTX Kernel starts this task with os_tsk_create (job3,1)
  40. *---------------------------------------------------------------------------*/
  41. __task void job3 (void) {
  42.   while (1)  {                        /* endless loop                        */
  43.     counter3++;                       /* increment counter 3                 */
  44.     if (counter3 == 0) {              /* signal overflow of counter 3        */
  45.       os_evt_set (0x0001,tsk4);       /* to task 4                           */
  46.       os_tsk_pass ();
  47.     }
  48.   }
  49. }

  50. /*----------------------------------------------------------------------------
  51. *   Task 4 'job4':  RTX Kernel starts this task with os_tsk_create (job4,1)
  52. *---------------------------------------------------------------------------*/
  53. __task void job4 (void) {
  54.   while (1) {                         /* endless loop                        */
  55.     os_evt_wait_or (0x0001, 0xffff);  /* wait for signal event               */
  56.     counter4++;                       /* process overflow from counter 3     */
  57.   }
  58. }

  59. /*----------------------------------------------------------------------------
  60. *        Main: Initialize and start RTX Kernel
  61. *---------------------------------------------------------------------------*/
  62. int main (void) {                     /* program execution starts here       */
  63.     hard_init();
  64.     os_sys_init (job1);                 /* initialize and start task 1         */
  65. }
复制代码

作者: 戚一一    时间: 2022-12-3 18:01
加油,您为我们树立了榜样
作者: tian1qing    时间: 2022-12-3 23:37
看到这个帖子感觉很亲切呀,原来不止我一个40+的人,看来我也不算老啊,时断时续学了3年了,现在翻着书参考着例子,基本可以写些简单的控制程序,没有太大的问题。现在指针也大概明白了,再往下有点艰难,程序大了,走着走着就不知道往哪走了,通讯iic,还有EEPROM就看不下去了。有时候不明白的,也不知道怎么问,自己死钻,头大。哎,看看大哥们的精神,也鼓励我继续学下去。一起加油
作者: wlhuang    时间: 2023-4-8 20:00
年轻的时候做产品开发做单片机编程,都用汇编语言,已经有多年没有玩单片机,前面一段时间闲着就再捡起来玩,在51黑论坛下载了一些C51的例程,花了差不多一个月时间把单片机C语言编程学了一下,现在算是入了点门。单片机还是挺有意思的,闲时玩玩才不会让脑瓜子锈掉!
作者: li64331218    时间: 2023-4-8 20:22
努力的人总是获得大家的尊重!赞!!
作者: 392198096    时间: 2023-5-6 10:50
同龄人的我现在也是开始捡起读书的时候所学,那个时候C语言和单片机没觉得很有兴趣,可能是资源教材少吧,编程主要教的是汇编,反倒是PLC容易上手,走上了自控的道路。工作后做了几年项目,转了管理层,开始参与公司扩张 拿项目,和做技术背道而驰。现在从基础开始学,选择了STC8H8K64,自娱自乐,分享学习;也能为推广国产芯片出一点点力量。
作者: myemcu    时间: 2023-5-6 12:58
直接32,大爷V5。。
作者: wuyimin456    时间: 2023-5-6 13:37
我60岁了,退休了,有时间了,从51开始学,学着就觉得自己C语言不足,就学C语言,买来模块,运行不正常,不知道是模块有问题还是自己程序有问题,卖家说arduno有现成程序测试,又去玩arduno,结果发现自己C++基础不行,又开始学C++,一步一步被推着向前走
作者: 非凡科技    时间: 2023-5-6 17:33
语言简单也就几十上百个词,关键的是逻辑
作者: 君工创    时间: 2023-5-6 21:18
只要学会了一点点,就会觉得非常好玩。
作者: 海阔天空8    时间: 2023-5-7 08:49
最大的障碍就是计算机语言
作者: 海阔天空8    时间: 2023-5-8 18:46
ly1972001 发表于 2021-9-19 08:14
有电路基础都能玩转单片机。

“有电路基础都能玩转单片机。”---------------------------话可不能这么说!我连门也进不了!
作者: wangshunda    时间: 2023-5-9 10:53
看这个贴子,感觉很亲切。
我也是一个业余的爱好者。
8年前自学单片机,学的STM32103f。自己学,太难了,我请了一个师傅,远程教我。
用了半个月,可以做简单的控制了,Modbus协议,485,232通讯,IO继电器控制,CO2,温度,湿度读取。
STM32没有wifi。这两年看到有ESP8266,就买了模块,可惜不会用。
又听说了乐鑫,ESP32,买了ESP32S3开发板。
现在终于上手了,环境搭建好了,示范程序可以便宜,烧录,监测了。
最近正在研究用ESP32S3,控制实现功能。
有兴趣的老铁们,欢迎交流,早日做出来。
作者: jkjjhhhjghfghyt    时间: 2023-5-9 15:14
佩服你 我也想学这个 可是一直没毅力最近才开始学习
作者: 1860774xxxx    时间: 2023-5-9 22:11
35岁刚接触51 如今37又开始接触STM 小学文化头疼
作者: CV0897    时间: 2023-5-11 10:14
叔叔真的好棒!
作者: chengchun    时间: 2023-5-12 13:56
我也是老头了,刚开始学PIC
作者: Hephaestus    时间: 2023-8-2 00:23
不好意思啊,今天开始看顶楼的那本书。
作者: ly1972001    时间: 2023-8-2 16:28
Hephaestus 发表于 2023-8-2 00:23
不好意思啊,今天开始看顶楼的那本书。

终于有进展了
作者: 十二橡树    时间: 2023-8-16 14:30
myemcu 发表于 2021-2-7 09:11
直接上32的都是猛人。。

还好 可能 大家都认为需要从51开始学 只是习惯了 其实32可以直接上手
作者: joyb    时间: 2023-8-17 08:45
1860774xxxx 发表于 2023-5-9 22:11
35岁刚接触51 如今37又开始接触STM 小学文化头疼

37怎么可能是 小学文化?
作者: likejian    时间: 2023-8-18 09:26
向大哥学习。
作者: hi等你    时间: 2023-8-18 10:38
joyb 发表于 2023-8-17 08:45
37怎么可能是 小学文化?



我也是小学文化,山里人读书不行辍学,但我编程有天赋,两年内加上不懒惰就能写这种收音机的水准,

楼主加油

作者: frily    时间: 2023-8-18 13:01
业余的,能看原版手册玩,很厉害了,期待见识一下成果。
作者: Dolcerena    时间: 2023-8-29 17:40
精神可嘉,活到老学到老!
作者: Hephaestus    时间: 2024-1-19 16:27
我把21楼代码迁徙到ARM v6编译器上面一大堆错误。

有人用v6编译器编译成功CMSIS-RTOS2吗?
作者: MICKEY821122    时间: 2024-1-19 16:50
我也想学,真的需要很大的勇气
作者: 975336981    时间: 2024-1-20 15:10
ww007 发表于 2021-2-20 11:06
俺40+,以前喜欢这个,但一直没耐心学。今年寒假,孩子学校有个小作业,让俺又捡起这个小东东。。每天白天 ...

闲中偷忙,取得一点点小小的成功,心中比吃了蜜还甜。
作者: 海阔天空8    时间: 2024-1-20 20:00
ly1972001 发表于 2021-9-19 08:14
有电路基础都能玩转单片机。

您这话我不太相信?我按电路硬件想鼓捣89C2051,蒸腾一个多月只是把单片机当存储器用了,不过存入的数据断电不丢失,,,,,,,,,
作者: sunhai1979    时间: 2024-1-21 10:25
精神可嘉,




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1