说说一次性把事情做对

辞职在家,忽然想起华为的入职培训的一句话:一次性把事情做对,一次性把事情做好。

有个故事,就是两个人去应聘,老板让他们分别取问问xx家土豆怎么卖的,B很快回来了,说xx家土豆价钱是什么。过了一会儿,A回来了,先说了xx家土豆价钱,然后说了下xx家土豆如何,然后又说了xx家隔壁的土豆信息。后来老板就留下了A。

这个故事确实很合这个题目,但是,对于初入职场的人,他们是不是听了这个故事就能一次性把事情做对了呢?

答案肯定是不可能的。我觉得,一个人要想把事情做对,那么他首先要知道什么是错,要知道如何做错,如果没经历过错,那么他是不会知道对、什么是好的。

举个例子,一次性把代码写好。(这里用了一个好字,那故事就多了,因为好是没办法衡量的)

部门新招来一批员工,现在要对这些员工进行基本的编程知识编程规范做培训,这次培训的内容是内存越界。

该怎么讲?我觉得首先需要在课堂上给大家几分钟时间,写个小程序,这个程序会涉及到内存操作。这时候就让大家去写,当然至于有没有人能写出越界的程序,就要看这个题目是不是会让大家掉入这个陷阱了。

然后让他们运行程序,互相读代码,评判程序。

这个时候在给大家讲什么是内存越界,是怎么产生的,如何避免。

我觉得这样,大家才会对越界有一定的认识。而上来就讲什么是内存越界,然后找个案例分析balabala,没人会有多深的印象。尤其培训完让他们写代码,新手的代码总是写的很长,然后他们发现了bug开始调试。这时候项目管理人员和写代码的这位新员工都欲仙欲死。bug找了很久,代码乱七八糟,下不去手!


在我的认识里,一次性把事情做对,需要先让这个人做很多杂七杂八不相干的东西,这时候他会遇到很多事情,如果他能开始思考如何偷懒,更快的把事情做完,那么他就学会了如何把事情做对、做好这个问题。

当然,让我们详细地看看每种实现精确延时的方法: ### 1. 定时器/计数器(Timer/Counter) - **定时器0**:可以通过初始化工作寄存器TMOD和TH0,TL0设置初始计数值,然后开启INT0中断。当计数满溢时,中断服务程序会被触发,此时可以根据需要更新延时状态或继续计数。这种方式适用于固定周期的延时。 - **定时器1**:方式1(8位自动重装模式)更为适合长延时,计数从内部晶振频率分频得到,只需设置预分频系数和定时器值即可。溢出后可通过中断重置计数,再次开始延时过程。 ### 2. 软件延时 - 使用`delay_ms`或`delay_us`这样的宏函数,内部一般包含一个循环,比如: ```c void delay(unsigned int time_in_ms) { for (unsigned int i = 0; i < time_in_ms * 16; i++); } ``` 这里16是假设的一个机器周期的平均延迟,实际上会依赖于具体的CPU性能。 ### 3. 延迟函数库 - 库函数可能会通过上述方法并进行优化,比如考虑到CPU流水线和中断优先级等问题,提供更准确的延时服务,用户只需要简单调用即可。 ### 4. 晶振频率测量 - 需要先获取到单片机运行时的晶振频率,然后根据延时公式(如`延时时间 = 振荡周期数 / 晶振频率`)计算出延时周期。这种方法精度最高,但计算复杂且需要额外的存储空间。 以上每种方法都有其适用范围和限制,选择哪种取决于具体的应用需求和系统的资源条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值