深入浅出C指针
1. 指针基本介绍
2. 指针类型
3. 指针的指针
4. 传值与传引用
5. 指针与数组
6. 数组作为函数参数
7. 指针和字符数组
8. 指针和多维数组
9. 指针和动态内存
10. 函数返回指针从栈底向上传一个局部变量或者一个局部变量的地址是可以的,但是反过来不行;如果函数要返回一个指针,要用堆。因为栈是自动释放的,而堆需要手动释放。
深入浅出数据结构
1. 链表1.1 链表基本介绍
嵌入式题库总结
一、C语言1. inline 和 static inlineinline的优缺点inline是c99的特性。在c99中,inline是向编译器建议,将被inline修饰的函数以内联的方式嵌入到调用这个函数的地方。 而编译器会判断这样做是否合适,以此最终决定是否这么做。
好处:减少调用函数时的开销,如:减少传参时可能引起的压栈出栈的开销。减少PC跳转时对流水线的破坏。
坏处: 以空间换时间,代码所占体积会更大。
static inline和inline的区别显然我们希望它们被其他文件访问。那么我们的inline函数原型就应该定义在头文件中,注意是函数原型而不是函数声明。因为开发者决定不了一个函数是否被内联,开发者只有建议权,只有编译器具有决定权。这就造成了一个很困扰的事情:除非你看到一个函数的反汇编代码,否则你很难确定他是不是内联函数。试想,如果头文件中的Inline函数在没有被编译成内联函数的情况下,被include到了多个源文件中,势必会产生函数重复定义的问题。 因此,我们要再加一个关键字static,才能避免这个问题。
static inline使用时机static inlin ...
rockchip之adc按键驱动
一、设备树12345678910111213// vi rk3399pro-firefly-core.dtsi +55adc-keys { compatible = "adc-keys"; io-channels = <&saradc 2>; //adc选用的是saradc通道2 io-channel-names = "buttons"; poll-interval = <100>; keyup-threshold-microvolt = <1800000>; //表示按键抬起,saradc通道2的电压(单位微伏)。 adc-power-key { linux,code = <KEY_POWER>; //按键上报的键值 label = "power key"; ...
rockchip之pwm驱动
设备树的pwm节点:
1234567891011// vi rk3399.dtsi:pwm0: pwm@ff420000 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420000 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "active"; pinctrl-0 = <&pwm0_pin>; clocks = <&pmucru PCLK_RKPWM_PMU>; clock-names = "pwm"; status = "okay";};
这个设备树节点会和pwm-rockchip.c匹配,调用probe函数:
根据设备树的信息,配置pwm的 ...









