其他分享
首页 > 其他分享> > 【笔记】2013-09

【笔记】2013-09

作者:互联网

受不了xxxx恶心人的行为,遂搬迁至博客园。
始发:2014-03-17 17:49:18

此为作者学习工作中的笔记,多有网搜资料;故,若侵权,请告知,第一时间删除。

9-2

void foo(int x, int y);

该函数被 C 编译器编译后在symbol 库中的名字为_foo,而 C++编译器则会产生像_foo_int_int之类的名字。_foo_int_int 这样的名字包含了函数名和函数参数数量及类型信息,C++就是靠这种机制来实现函数重载

为了实现 C 和 C++的混合编程,C++提供了C连接交换指定符号 extern"C"来解决名字匹配问题,函数声明前加上 extern"C"后,则编译器就会按照 C 语言的方式将该函数编译为_foo,这样 C 语言中就可以调用C++的函数。

 

__FILE__ 包含当前程序文件名的字符串
__LINE__ 表示当前行号的整数
__DATE__ 包含当前日期的字符串
__TIME__ 包含当前时间的字符串
__STDC__ 如果编译器遵循ANSI C标准,它就是个非零值


字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个数据缓冲区的形式进行。


9-4

奇偶校验位是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。


9-5

int sscanf(const char *buffer, const char *format [, argument ] ... );

从一个字符串中读进与指定格式相符的数据。

1. 常见用法。

char buf[512];
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);

 

结果为:123456

2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);

 

结果为:1234

3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

sscanf("123456 abcdedf", "%[^ ]", buf); //[^ ]表示非空格,遇空格就停止
printf("%s\n", buf);

 

结果为:123456

4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);

 

结果为:123456abcdedf

5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s/n", buf);

 

结果为:123456abcdedf

6、给定一个字符串iios/12DDWDFF@122,获取/和@之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中。//* 表示读取,但不进行保存。也就是说,跳过。

sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s/n", buf);

 

结果为:12DDWDFF

7、给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格)

sscanf(“hello, world”, "%*s%s", buf);  
printf("%s/n", buf);

 

结果为:world

%*s表示第一个匹配到的%s被过滤掉,即hello被过滤了,如果没有空格则结果为NULL。

注:关键还是正则表达式呀。

 

9-6

时钟切换功能为用户提供了一种易用、快速、安全的从一个时钟源切换到另一个时钟源的途径。

为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。其原因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。一旦主时钟源稳定,用户程序可将主时钟切换到另外的时钟源。


9-18

STM8的确是不错的芯片,但是如果用到与PC通信而且有多字节的变量的情况就要注意了,STM8是大端模式,PC,51,AVR,STM32等都是小端模式的。


9-24

TIM1 由一个 16 位的自动装载计数器组成,由一个可编程的预分频器驱动。

不同的用途:

1、基本的定时

2、测量输入信号的脉冲宽度(输入捕获)

3、产生输出波形(输出比较,PWM 和单脉冲模式)

4、对应于不同事件(捕获,比较,溢出,刹车,触发)的中断

5、与 TIM5/TIM6 或者外部信号(外部时钟,复位信号,触发和使能信号)同步

高级控制定时器广泛的适用于各种控制应用中,包括那些需要中间对齐模式PWM 的应用,该模式支持互补输出和死区时间控制。       

 

有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器)。

设计preload register和shadow register的好处是,所有真正需要起作用的寄存器(shadow register)可以在同一个时间(发生更新事件时)被更新为所对应的preload register的内容,这样可以保证多个通道的操作能够准确地同步。如果没有shadow register,或者preload register和shadow register是直通的,即软件更新preload  register时,同时更新了shadow register,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上其它因素(例如中断),多个通道的时序关系有可能是不可预知的。


9-27

NFC是Near Field Communication缩写,即近距离无线通讯技术。由飞利浦公司和索尼公司共同开发,NFC 是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC 提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。


9-29

IAR编译产生的message:

25 345 bytes of readonly code memory

 6 271 bytes ofreadonly  data memory

 3 556 bytes ofreadwrite  data memory

表示:

25 345 个字节的代码(占FLASH)

6 271 个字节的常量数据(占FLASH)

3 556 个字节的变量数据(占RAM)

标签:__,register,sscanf,09,笔记,寄存器,字符串,buf,2013
来源: https://www.cnblogs.com/rockyching2009/p/13115607.html