【笔记】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