需要的一些:
  1. 对于单片机程序,首先要对于要使用的单片机比较了解,对于硬件设计比较了解,对C编程比较熟悉;
  2. 了解单片机是因为当需要设置某些寄存器的时候,会知道相应的设置方式,避免出现因为寄存器设置造成的不必要的调试时间。
  3. 对硬件比较了解,因为硬件电路是程序运行的前提,如果硬件电路出现了问题,软件无论如何也跑不起来;
  4. 对C比较熟悉,因为过了初始化以后主要工作就是由C来承担了;
  5. 对于需要操作模块的了解与设置,知道相应的设置或操作引发的结果。
遗忘的死角:
最近在查看一段代码的时候,发现里边有一个潜在的递归操作,而且没有限制递归的次数。
对于在PC上运行的程序,很多时候是不用担心的,毕竟内存还是够用的。当然对于数据量比较大的时候,还是需要注意。
但是对于在单片机上运行的只有512字节栈空间的uC/OS系统的一个任务而言,如果发生了,很容易造成内存溢出。
确实,有时候使用递归会使问题更容易解决,但是它所带来的资源消耗也是很可观的。由于不知道何时终止,对于内存受限的系统而言,更像是一个定时炸弹。
对于递归的使用,在很多时候还是不建议使用的。
虽然,它是我们C基础教材上经常出现的一种方法,但是它确实在很多时候都不适合使用。

关于Flash初始化及Fatfs初始化:

  1. 如果遇到FR_NOT_ENABLED,则是没有正常挂载需要f_mount,挂载成功Flash;
  2. 如果遇到FR_NO_FILESYSTEM,则需要f_mkfs初始化文件系统,创建Fat文件系统;
  3. 但是如果遇到了f_mkfs成功了,这时调用f_open时,又出现了FR_NO_FILESYSTEM,该如何是好呢?f_mkfs的哪一点漏洞,会造成没有正确的返回?
  4. 关于(3)的疑问,找到了是硬件焊接不牢固的问题。
  5. 虽然(3)的问题解决了,但是在f_open的时候,却依旧返回FR_NO_FILE,即使创建文件,也返回同样的错误,为何?
  6. (5)的问题在代码上定位到ff.c的1029行,发现注释是Initialize the SFN entry失败。 分析发现既然Flash可创建文件系统,即可写入,这一步通不过应该不是硬件的原因,可能是软件上的某个操作,导致了不正常的文件,于是重新初始化了文件系统,发现可以。应该是因为初始化完成后,没有关闭文件,导致再一次操作时,一直失败。这个时候需要先关闭文件,再次打开。当然,重新f_mkfs也是可以的。

关于单片机程序设计的几点相关推荐

  1. 《例说8051:单片机程序设计案例教程》——2-4 指令格式

    本节书摘来异步社区<例说8051:单片机程序设计案例教程>一书中的第2章,第2.4节,作者:张义和,陈敌北,更多章节内容可以访问云栖社区"异步社区"公众号查看 2-4 ...

  2. 浅谈单片机程序设计中的“分层思想”!

    浅谈单片机程序设计中的"分层思想",并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用.看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种 ...

  3. 《例说8051:单片机程序设计案例教程》——2-5 寻址方式

    本节书摘来异步社区<例说8051:单片机程序设计案例教程>一书中的第2章,第2.5节,作者:张义和,陈敌北,更多章节内容可以访问云栖社区"异步社区"公众号查看 2-5 ...

  4. 《例说8051:单片机程序设计案例教程》——第 2 章 输出口的应用

    本节书摘来异步社区<例说8051:单片机程序设计案例教程>一书中的第2章,作者:张义和,陈敌北,更多章节内容可以访问云栖社区"异步社区"公众号查看 第 2 章 输出口的 ...

  5. 测速的c语言程序,M法T法测速单片机程序设计.doc

    M法T法测速单片机程序设计 M法.T法测速单片机程序设计 摘 要 本设计为M法.T法测速的单片机程序设计.使用STC89C52单片机作为控制器,使用该单片机的外部中断和定时器对编码器的输出的脉冲进行采 ...

  6. 浅谈单片机程序设计中的“分层思想”

    "分层思想"并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用.看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种恍然大悟的感觉.如果说我 ...

  7. c语言单片机程序设计例,51单片机C语言程序设计经典实例(第2版)

    项目一 单片机系统的软.硬件开发环境 任务1 单片机最小应用系统的组成 任务2 Keil C51编译软件的使用 任务3 Proteus 80仿真软件的使用 项目二 C51程序设计语言基础 任务1 C ...

  8. 8乘8led点阵显示数字_51单片机程序设计:[7]88点阵显示汉字

    效果截图,详细代码: #include sbit dula=P2^6; //段码选通位-控制74HC573段输出sbit wela=P2^7; //位码选通位-控制74HC573位输出//sbit O ...

  9. STM32/51单片机实训day6(一)——Proteus8.6版本+STM32F103驱动LCD12864显示|Keil5单片机程序设计

    内  容:实现LCD显示 学  时:4学时 知识点:LCD12864芯片介绍,读写操作时序,电路设计 重点: 读写操作时序 难点:读写操作时序 时间:2022年12月26日 9:00-11:50 总结 ...

  10. 状态机思路在程序设计中的应用

    状态机思路在单片机程序设计中的应用 状态机的概念 状态机是软件编程中的一个重要概念.比这个概念更重要的是对它的灵活应用.在一个思路清晰而且高效的程序中,必然有状态机的身影浮现. 比如说一个按键命令解析 ...

最新文章

  1. 使用Netty如何做到单机秒级接收35万个对象
  2. cobaltstrike安装_Cobalt Strike发送钓鱼邮件
  3. simple-spring-memcached统一缓存的使用实例4
  4. java hadoop2.6.0 读取文件报错_java 程序访问hdfs错误 hadoop2.2.0
  5. openmp并行编程_OpenMP实现生产者消费者问题
  6. 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
  7. 前端感官性能的衡量和优化实践
  8. 【BZOJ2342】双倍回文,manacher+并查集优化
  9. mysql 电商实战_电商项目测试实战(一)
  10. 如何去除chrome最常访问的网页
  11. C++ STL bitset类常用函数的使用
  12. iOS开发NSDecimalNumber的基本使用,加、减、乘、除、指数、比较
  13. 基于虚拟仿真技术的数字化工厂管理系统
  14. 游戏产业链:客户端游戏/网页游戏
  15. Windows系列操作系统注册表的组成与分析(转)
  16. 花椒六间房“花房之夜”落幕 全新升级不止心动
  17. 2021年最详细的Android屏幕适配方案汇总
  18. 11部中考常考的名著思维导图汇总
  19. Java web p41
  20. 《回忆之前,忘记之后---写给我记忆中的汪峰》

热门文章

  1. 邮件系统安装配置(postfix + dovecot)
  2. php faker,Laravel的Faker的使用
  3. 为什么这几年男生都不愿意去追女生了?
  4. 智能问答技术概览及在小爱同学的实践
  5. PowerVR 6系列架构分析
  6. 2014年你不用担心的10件事
  7. redis 应用场景
  8. 《触动人心—设计优秀的iPhone应用》读书笔记(二)
  9. 程序存储器 指令寄存器 程序计数器 地址寄存器
  10. Redis【有与无】【Lettuce】L5.Redis Cluster