找回密码
 注册
关于网站域名变更的通知
查看: 341|回复: 1
打印 上一主题 下一主题

成为一名合格嵌入式程序员应知道的0x10个基本问题(下)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-19 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
成为一名合格嵌入式程序员应知道的0x10个基本问题(中)* @# L- ], R5 S( o3 a! b

  ?: e' Q9 ]: Z4 m- S. f, P( J8 R

0 W0 K( l& ^/ L3 e7 _; {$ A4 m3 s位操作(Bit manipulation)
6 f$ Z+ l6 H4 d$ v- j% ~, F( |
& v8 d3 @8 ~  ]( f7 D; a+ Y" F9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。, ?' H1 Z; T0 l
对这个问题有三种基本的反应+ b2 ^/ h$ y/ f
1)不知道如何下手。该被面者从没做过任何嵌入式系统的工作。
$ P' J) q1 t& T: ~$ \' z, c2) 用bit fields。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到 Infineon为其较复杂的通信芯片写的驱动程序,它用到了bit fields因此完全对我无用,因为我的编译器用其它的方式来实现bit fields的。从道德讲:永远不要让一个非嵌入式的家伙粘实际硬件的边。& k2 k5 e0 F9 n4 v2 T
3) 用 #defines 和 bit masks 操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案如下:
" O7 e4 A' F( m. ^% W1 I
: T, @( N! l; a. q' {
游客,如果您要查看本帖隐藏内容请回复

' Z6 `& m# V8 \; @, h4 g2 }
! ?6 Y* E6 w  y- ~1 ~4 X: f

该用户从未签到

2#
发表于 2019-7-19 18:30 | 只看该作者
看看成为一名合格嵌入式程序员应知道的哪些基本问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 20:34 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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