嵌入式C/C++
文章平均质量分 81
记录下在平时和上班中对嵌入式C或者C++有一些自我理解的点滴。
Tanner_SL
庄子养生主:“彼节者有间,而刀刃者无厚;以无厚入有间,恢恢乎其于游刃必有余地矣。”
展开
-
STM32F7xx基于HAL库的USB_CDC接收数据的函数调用
在STM32F7xx的HAL库实现的USB通信中,里面存在着多个库文件和函数的调用,这一章节主要对USB接收数据的函数调用流程来进行分析,USB的数据发送部分相对来说比较容易分析。在usb通信中,STM32F7xx作为从设备,当USB接收到数据时,从而产生中断;/** * @File: stm32f7xx_it.c * @brief This function handles USB On the Go Hs global interrupt. */extern PCD_HandleTyp原创 2021-07-30 22:43:27 · 6073 阅读 · 2 评论 -
程序编写规范
代码书写规则下面一些常见的代码书写规则:(1)尽量使用接口,然后使用类实现接口,以提高程序的灵活性。(2)一行不要超过80个字符。(3)尽量不要手工更改计算机生成的代码,若必须更改,一定要改成和计算机生成的代码风格 一样。(4)关键的语句(包括声明关键的变量)必须要写注释。(5)建议局部变量在最接近使用它的地方声明。(6)不要使用goto系列语句,除非是用在跳出深层循环...原创 2019-11-15 10:48:21 · 915 阅读 · 0 评论 -
整理的uC/OS_II系统相关知识点
当系统响应时间很重要时,要使用可剥夺型内核,uc/OS_II是可剥夺型的实时内核,抢占式的多任务实时内核任务的三个重要部分程序代码**私有堆栈:**保存的是任务上下文的信息**任务控制块:**保存了任务堆栈指针,任务当前状态标志,任务的优先级别uC/OS_II的任务调度任务调度的思想是:“近似地每时每刻总是让优先级最高的就绪任务处于运行状态”即任务调度采用的就是最高优先级调度算法...原创 2019-10-14 17:18:46 · 584 阅读 · 0 评论 -
整理的C/C++相关的面经知识点
自己在找工作的过程中,参考了一些博客并自己整理的有关C/C++面经知识点。C语言中 new和malloc的区别**申请内存所在位置:**new/delete是操作符,malloc/free是函数;new操作符从自由存储区(free store)上位对象动态分配内存空间,而malloc函数从从堆上动态分配内存。而且new在申请对象时会调用对象的构造函数和析构函数**自由存储区是C++基于ne...原创 2019-10-14 17:01:37 · 661 阅读 · 0 评论 -
string流
string流头文件为<sstream>,定义了三个类型来支持内存IO,istringstream从string读取数据,ostringstream向string写入数据,stringstream既可以从string读取数据,也可以向string写数据计算字符串最后一个单词的长度,单词以空格隔开。#include<iostream>#include<st...原创 2019-08-16 11:16:14 · 474 阅读 · 0 评论 -
关于笔试中的数据输入问题
输入数据的行数和个数已知这种情况下的数据输入就比较简单了int n;cin >> n;vector<int> data(n, 0);for(int i = 0; i < n; i ++ ) { cin >> data[i];}输入数据的行数和个数未知每行的数据之间空格隔开,每行的数据个数不定,一直读到文件结束符为止...原创 2019-08-09 16:38:50 · 398 阅读 · 0 评论 -
指针与数组
数组是一块连续的内存区域,在C语言中,数组的大小在编译时必须确定下来。对于数组名,可以给出三个结论:数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组; 数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量; 指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址。其对于数组名和指针,主要有以下几点注意:(1) 数...原创 2018-10-14 19:48:11 · 154 阅读 · 0 评论 -
struct的成员对齐
1. 自然对界 struct 是一种复合数据类型,其构成元素既可以是基本数据类型(如 int、long、float 等)的变量,也可以是一些复合数据类型(如 array、struct、union 等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界(natural alignment)条件分配空间。各个成员按...原创 2018-09-19 10:42:07 · 238 阅读 · 0 评论 -
C++中读取文本里的矩阵数据到动态二维数组中
将文本文件里面的矩阵数据读取到二位数组中,当矩阵数据的行数,列数已知时就比较简单,这里不再赘述;但矩阵的行数和列数未知时这时就需要将数据读取到动态数组中,如果一开始就申请很大的二维数组时,当数据很少时就会浪费空间;#include<iostream>#include<fstream>#include<string>#include<vector...原创 2018-09-10 10:47:01 · 4108 阅读 · 3 评论 -
itoa() 函数和 atoi() 函数
atoi() 函数原型:int atoi (const char * str);功能:将字符串转化成int型整数参数:将要转化成整数的字符串返回值:返回转化成int型的整数值itoa() 函数原型:char * itoa ( int value, char * buffer, int radix );功能:将整数转化成字符串value:是要转换的数字buff...原创 2018-08-24 10:50:21 · 486 阅读 · 0 评论 -
cout的输出格式控制
cout进行格式化操作时可以直接利用setf(),unsetf()和flags()函数,其中的setf()和unsetf()函数是在当前格式状态上追加或者删除指定的格式,flags()函数是将当前格式状态全部替换为指定的格式,其函数的参数如下:ios::dec //10进制 ios::hex //16进制 ios::oct //8进制 ios::showbase...原创 2018-08-30 20:40:46 · 877 阅读 · 0 评论 -
C/C++中对数据的取整处理
在C/C++中对double型数据的取整处理,当数据较小,没有超过int型数据的范围时可进行强制转换处理,例:double num1=1234.567890;int num2=(int)num1;当double型数据的数值范围超过int型数据范围时,就需要用到floor(),ceil(),round()三个函数,下面来进行分别介绍:1.floor函数原型:double f...原创 2018-08-14 17:24:14 · 4134 阅读 · 0 评论 -
指针和const
有两种不同的方式将const关键字用于指针:第一种是指针指向一个常量对象,防止使用该指针修改所指向的值;第二种是将指针本身声明为常量,防止改变指针指向的位置。1.指向一个常量的指针例如,声明一个指向常量的指针pt:int age=23;const int*pt=&age;该声明指出,pt指向一个const int(这里为23),因此不能使用pt来修改这个值,即*...原创 2018-06-25 14:24:34 · 920 阅读 · 0 评论