自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CoolBreeze的博客

编程代码人

  • 博客(121)
  • 资源 (17)
  • 收藏
  • 关注

原创 CP AUTOSAR之SPI Handler/Driver详细说明

本文遵循autosar标准:R22-11#1 简介及功能概述SPI 处理程序/驱动程序提供对通过 SPI 总线连接的设备进行读取和写入的服务。它为多个用户提供对 SPI 通信的访问(例如 EEPROM、看门狗、I/O ASIC)。它还提供配置片上 SPI 外设所需的机制。该规范描述了单片 SPI 处理程序/驱动程序的 API。该软件模块包括处理和驱动功能。该单片 SPI 处理程 序/驱动程序的主要目标是充分利用每个微控制器的功能,并允许根据静态配置进行实现优化,以尽可能 满足 ECU 的需求。

2024-03-03 23:46:04 95 1

原创 CP AUTOSAR之LIN Driver详细说明

本文指定了 AUTOSAR 基础软件模块 LIN 驱动程序的功能、API 和配置。LIN 驱动程序是微控制器抽象层 (MCAL) 的一部分,执行硬件访问并向上层提供独立于硬件的 API。唯一可以访问 LIN 驱动程序的上层是 LIN 接口。一个 LIN 驱动程序可以支持多个通道。这意味着 LIN 驱动程序可以处理一个或多个 LIN 通道,只要它们属于同一 LIN 硬件单元。在下面的示例中,三个不同的 LIN 驱动器连接到 LIN 接口。仅包含一个 LIN 的驱动是最常见的配置。

2024-02-29 14:13:22 183 1

原创 正点原子STM32MP157开发板的一些错误和解决方法

执行make menuconfig遇到错误错误1scripts/kconfig/Makefile:208: recipe for target 'scripts/kconfig/mconf-cfg' failedmake[1]: *** [scripts/kconfig/mconf-cfg] Error 1Makefile:567: recipe for target 'menuconfig' failedmake: *** [menuconfig] Error 2解决方法sudo

2020-12-28 14:07:33 2562 1

原创 ubuntu下一些报错和解决方法

ubuntu20.04下安装了python3后执行python --version提示python找不到默认情况下,Ubuntu 20.04随附Python 3作为默认python版本。它可以作为“ python3”命令而不是“ python”使用。sudo ln -s /usr/bin/python3 /usr/bin/python然后提示ln: 无法创建符号链接’/usr/bin/python’: 文件已存在这时发现使用命令python --version依然找不到python,

2020-12-24 15:41:54 6667 2

原创 linux下的常用操作(备忘)

1.设置TAB键为4字节VI编辑器默认TAB键为8空格,我们改成4空格,用 vi打开文件 /etc/vim/vimrc,在此文件最后面输入如下代码set ts=42.vim显示行号用 vi打开文件 /etc/vim/vimrc,在此文件最后面输入如下代码set nu3.设置软件更新服务器为中国点击ubuntu左上角的活动,搜索软件和更新4.更新本地数据sudo apt-get update5.软件安装更新和卸载(以串口工具为例)sudo apt

2020-12-08 12:53:01 265

原创 香橙派4在armbian上应用自启动设置

香橙派4在armbian上应用自启动设置设置开机显示命令行编辑启动命令验证命令是否可用编辑了一个qt界面,需要设置开机启动,费了九牛二虎之力,终于搞定了。设置开机显示命令行开机不显示图形界面,直接显示命令行的操作有两种方法:多用户方法sudo systemctl set-default multi-user.target //多用户模式(命令行)sudo systemctl set-default graphical.target //图形化界面systemctl 方法system

2020-11-18 14:03:45 3243

原创 Orange Pi4在PC机上QT5开发环境的搭建

1.下载交叉编译工具下载地址:https://www.linaro.org/downloads/进去之后选择选择下的工具。将交叉编译工具 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz复制到你想要安装的目录,并解压,命令:hasee@ubuntu:/home/user$ sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz 我们.

2020-09-19 13:51:46 2853 2

原创 搜狗输入法在ubuntu18.04中乱码和在QT5中无法输入中文解决方法

乱码效果如下再切换一次输入法,又变正常。一直处于正常和乱码交替变化。目前按照网上的其它方法,删除搜狗目录文件,重启fcitx都无效。后来找到一个简单的方法:打开将搜狗设置到输入法的第二个位置,第一个位置我用英语来占位这样搜狗切换就没有乱码了。...

2020-09-17 09:59:22 643

原创 STM32远程升级设计

STM32 的内部闪存地址起始于0x08000000。一般情况下,程序从此地址开始写入。由于STM32内部是通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序完成启动,而这张“中断向量表”的起始地址是0x08000004。中断代码响应过程简单表述如下:1、当中断来临,STM32 的内部硬件机制亦会自动将PC 指针定到“中断向量表”处,并根据中断源取出对应的中断向量执行中断服务程序;2、STM32 在复位后,先从0X08000004 地址取.

2020-07-16 17:21:11 2384

原创 stm32模拟SPI协议

代码使用HAL库实现。话不多说,直接看代码//GPIO初始化void MX_IO_Init(void){ //本例中引脚端口是GPIOB,使能时钟为__HAL_RCC_GPIOB_CLK_ENABLE(); //如果移植,请注意此处的更改 GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pins : P

2020-07-10 00:15:52 1711 2

原创 驱动开发:实现字符设备

本文通过操作寄存器实现led灯的亮灭#include <linux/init.h>#include <linux/module.h>#include <linux/platform_device.h>#include <linux/miscdevice.h>#include <linux/fs.h>#include <linux/moduleparam.h>#include <linux/stat.h>

2020-07-10 00:01:05 180

原创 OpenCV实现图片人脸检测

本文使用python实现import cv2 as cvimport numpy as npdef face_detect_demo(src): gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) face_detector = cv.CascadeClassifier("D:/Python/Python38/Lib/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml")

2020-06-21 01:38:37 566

原创 OpenCV的分水岭算法

本文使用python实现import cv2 as cvimport numpy as npdef watershed_demo(src): print(src.shape) blurred = cv.pyrMeanShiftFiltering(src, 10, 100) # 去噪声 gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) # 转为灰度 ret, binary = cv.threshold(g

2020-06-20 18:15:51 282

原创 OpenCV的图像腐蚀膨胀和开闭操作

本文使用python实现图像腐蚀import cv2 as cvimport numpy as npdef erode_demo(image): # 图像腐蚀 print(image.shape) gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 图像二值化 cv

2020-06-18 00:10:31 577

原创 OpenCV的对象测量

import cv2 as cvimport numpy as npdef measure_object(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # RGB转灰度 ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 二值化 print("threshold value : %s"%ret) c.

2020-06-12 19:16:40 443

原创 OpenCV的轮廓发现

import cv2 as cvimport numpy as npdef contours_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 图像二值化 ''' def threshold(src: Any, # 源图像,可以为8位的灰度.

2020-06-09 01:00:20 432

原创 OpenCV的霍夫曼圆检测

import cv2 as cvimport numpy as npdef detect_circles_demo(image): dst = cv.pyrMeanShiftFiltering(image, 10, 100) # 均值偏移滤波 ''' def pyrMeanShiftFiltering(src: Any, # 输入的8-比特,3-信道图象 sp: Any, # 空间窗的半径 .

2020-06-08 23:49:39 1255

原创 OpenCV的霍夫曼直线检测

import cv2 as cvimport numpy as npdef line_detection(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) lines = cv.HoughLines(edges, 2, np.pi/180, 200) ''' def HoughLines(image: Any.

2020-06-08 01:39:03 401 2

原创 OpenCV的Canny边缘提取

import cv2 as cvimport numpy as npdef edge_demo(image): blurred = cv.GaussianBlur(image, (3, 3), 0) # 高斯模糊,平滑处理原图像降噪 gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) # 转为灰度 xgrad = cv.Sobel(gray, cv.CV_16SC1, 1, 0) # x的梯度 ygra.

2020-06-07 02:41:17 605 3

原创 OpenCV关于图像梯度

Sodel算子import cv2 as cvimport numpy as npdef sobel_demo(image): # Sobel算子 grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) # 求x方向上的梯度 ''' def Sobel(src: Any, # 原图像 ddepth: Any, # 图像深度 dx: Any,

2020-06-06 18:46:38 265

原创 OpenCV图像金字塔

本文使用python实现。图像金字塔import cv2 as cvimport numpy as npdef pyramid_demo(image): # 图像金字塔 level = 3 temp = image.copy() pyramid_images = [] for i in range(level): dst = cv.pyrDown(temp) ''' def pyrDown(src: An

2020-06-06 00:38:39 248

原创 OpenCV的图像二值化

本文使用python实现。全局阈值import cv2 as cvimport numpy as npdef threshold_demo(image): # 全局阈值 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) ''' # 函数 cvThreshold 对单通

2020-06-05 01:14:44 525

原创 OpenCV模板匹配

本文使用python实现。OpenCV中模板匹配使用的公式如下函数(1):平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。函数(2):归一化平方差匹配法函数(3):相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。函数(4):归一化相关匹配法函数(5):相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。函数(6):归一化相关系数匹配法代码如下import cv2 as cvimport numpy as npdef te

2020-06-04 01:36:30 1453

原创 OpenCV的直方图

本文使用python实现图像直方图图像直方图是不同像素值范围的像素个数统计图:# matplotlib.pyplot.hist()函数def hist(x: Any, # 输入的数据 bins: Any = None, # 条形数 range: Any = None, # x轴的范围,范围之外的将被舍弃,数组元组类型(起,终)

2020-06-01 16:16:44 913

原创 OpenCV的双边模糊和均值漂移

双边模糊双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘,是由于其滤波器的核由两个函数生成:空间域核和值域核。空间域核为模板窗口的其他系数的坐标;为模板窗口的中心坐标点;为高斯函数的标准差。空间域核由像素位置欧式距离决定的模板权值:由的计算公式可知,它是计算临近点到中心点临近程度,因此定义域核是用于衡量空间临近的程度。使用该公式生成的...

2020-06-01 01:07:36 746

原创 OpenCV的高斯模糊

本文使用python实现本文的文字说明全在代码的注解里面,不要担心代码看不懂import cv2 as cvimport numpy as npdef clamp(pv): if pv > 255: return 255 elif pv < 0: return 0 else: return pvdef gaussian_noise(image): # 高斯噪声 h, w, c = image

2020-05-31 01:04:55 938

原创 OpenCV实现模糊操作

模糊操作的基本原理:1.基于离散卷积,2.定义好每个卷积核,3.不同卷积核得到不同的卷积效果,4.模糊是卷积的一种表象import cv2 as cvimport numpy as npdef blur_demo(image): # 均值模糊 dst = cv.blur(image, (5, 5)) # (5, 5)模糊参数,第一个5是水平模糊,第二个5是垂直模糊 cv.imshow("blur_demo", dst)def median_demo(image)

2020-05-30 18:17:28 609

原创 OpenCV的ROI和泛洪填充

ROI(region of interest),即感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域。import cv2 as cvimport numpy as npsrc = cv.imread("C:/Users/admin/Desktop/14.jpg") # 打开一张图片cv.namedWindow("input image", cv.WINDOW_AUTOSIZE) # 设置图片尺寸,自动cv.imshow

2020-05-30 17:09:21 401

原创 stm32的低功耗模式

本文以smt32L4R5ZIT6单片机为例,编写代码。本文只讲代码,不说废话。单片机进入低功耗前,都应该关闭中断。同时在低功耗前加上如下代码功耗更低 __HAL_RCC_PWR_CLK_ENABLE();//使能电源时钟 HAL_PWR_EnableBkUpAccess();//使能LSE/RTC控制的备份域 LSE_OFF_Config();//关闭LSE时钟,确保RTC关闭 HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAG

2020-05-30 02:27:04 3572 4

原创 OpenCV的像素运算

本文代码使用python实现import cv2 as cvimport numpy as np# 像素相加def add_demo(m1, m2): dst = cv.add(m1, m2) cv.imshow("add_demo", dst) # 显示图片# 像素相减def subtract_demo(m1, m2): dst = cv.subtract(m1, m2) cv.imshow("subtract_demo", dst)# 像素

2020-05-29 23:43:51 661

原创 OpenCV的色彩空间实例

本文使用python实现。色彩空间常用的就如下几种:RGB 、HSV 、HSI、YCrCb(YUV)RGB色彩就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成。HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型。HSI〔Hue-Saturation-Intensity(Lightnes.

2020-05-28 18:43:54 520

原创 OpenCV打开图片并获取图片信息

本文使用python语言实现,话不多说,直接上代码def get_image_info(image): print(type(image)) # <class 'numpy.ndarray'> image的类型 print(image.shape) # (496, 751, 3) 形状:高496,宽751,3通道 print(image.size) # 1117488 496x751x3 print(image.dtype) # uint8 3通道

2020-05-28 00:36:47 2400 1

原创 win10下QT5配置OpenCV方法

作为一个QT小白,最近在配置QT5+OpenCV,却发现总是踩坑。好在我成功配置好了。系统版本:win10 64位系统QT5版本:qt-opensource-windows-x86-5.12.3.exeCmake版本:cmake-3.17.0-win64-x64.zipOpenCV版本:opencv-4.3.0.zip...

2020-05-26 19:57:16 1987

原创 stm32模拟IIC操作

话不多说,直接上代码,不懂的看注解//本程序使用的IIC器件是一个三轴加速度,型号MMA845x#define IIC_WRITE 0x1C#define IIC_READ 0x1C#define clk_hight (HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET)) //本程序IIC的时钟线接在PB6,置高#define clk_low (HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, G

2020-05-23 00:25:27 1590 1

原创 stm32的内部flash读写操作(含结构体的保存)

不同的stm32单片机的flash大小不同,这个需要查阅芯片手册或者查看STM32CubeMX软件。stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,要操作flash时注意不要超出此范围。Flash中的内容一般用来存储代码和一些定义为const的数据,和一些用户自定义的保存数据,它断电不丢失。不同型号的单片机对flash的操作方式略有不同。下面我以自己用到的STML4R9VIT6和STM32L431RCT6为例贴上代码。ST

2020-05-20 01:22:22 8852

原创 python中自定义异常和assert,else,finally

class MyException(Exception): # 自定义异常类,继承自Exception pass# raise MyException("这是用户定义的异常") # 触发自定义异常try: # 捕捉异常 ...

2019-06-18 12:55:24 619

原创 python中try-except处理异常

# 异常的使用a = [1, 2, 3, 4, 5, 6, 0, 8, '22']# b = [item for item in a if 100 % item == 0]# print(b) # 直接运行报错ZeroDivisionError: integer division or modulo by z...

2019-06-18 12:09:01 854

原创 python中filter()高阶函数

# filter()函数是python内置的另一个有用的高阶函数# filter()函数接收一个函数f和一个list,# 这个函数f的作用是对每个元素进行判断,返回True或False# filter()根据判断结果自动过滤掉不符合条件的元素# 返回由符合条件元素组成的新lista = [1, 2, 3, 4, 5, 6]b = filter(lambda x: x % 2 ...

2019-06-17 18:42:36 9192 3

原创 python中map()和reduce()

# map()是python内置的高阶函数# 它接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,# 得到一个新的list并返回# reduce()函数也是python内置的一个高阶函数# reduce()函数接收的一个参数和map()类似,一个函数f,一个list,# 但行为和map()不同,reduce()传入的函数f必须接收两个参数,# re...

2019-06-17 18:21:22 1149

原创 python中列表解析

# 列表解析a = [1, 2, 3, 4]# b = [2, 3, 4, 5]b = [item for item in a] # 通过for循环将a中的元素取出来放在item中,并将item放在列表b中print(b) # [1, 2, 3, 4] 元素和a一模一样b1 = [item + 1...

2019-06-17 17:46:37 514

J-Link V9.zip

J-Link V9

2021-05-22

tslib-1.4.zip

一个触摸屏驱动

2021-03-29

QT之qcustomplot.zip

QT绘制曲线图的类,使用说明见https://blog.csdn.net/qq_40194498/article/details/79666903

2020-11-17

STM32L4-IAP.zip

该文件是使用stm32完成远程升级功能,是我在项目中正常使用的,已经删除库文件,该工程不能直接编译,需要复制函数出来,放在自己的代码中使用.

2020-07-16

stm32模拟spi.c

stm32模拟spi源代码,使用HAL库实现,可以拿来很方便的移植。下载前请注意,本代码已经在博客中完全开源出来,如有必要,请到博客中复制文本

2020-06-04

STM32L4R5ZIT6_低功耗模式选择.rar

这是一个stm32低功耗模式的代码,其中涉及13中低功耗模式,但是代码仅仅是一个demo,不可以直接编译,需要自己向里面添加库文件才行。可用的仅仅是各种进入低功耗的函数。

2020-05-30

stm32操作模拟IIC源码

stm32使用模拟IIC操作MMA845x的代码,方便移植,MMA8451 三轴加速度传感器,16 引脚,QFN 封装,数字I2C 输出,8 位/14 位精度可选,量程 2g/ 4g/ 8g 可选.

2020-05-22

cmake-3.17.0-win64-x64_opencv-4.3.0_cvui-2.7.0.zip

里面包含 cmake-3.17.0-win64-x64 opencv-4.3.0 cvui-2.7.0 三个文件,官方下载速度太慢,这里下载更容易

2020-05-17

tensorflow-1.14.0-cp36-cp36m-manylinux1_x86_64.whl百度云地址.txt

tensorflow-1.14.0-cp36-cp36m-manylinux1_x86_64.whl,文件大小104 MB (109,199,992 字节)

2019-07-04

Progress进度条源代码.rar

QT5实现的进度条界面,里面是一个压缩包,包含QT5的工程下所有文件,直接下载就可以运行,代码内容在博客中已经写出来了

2019-05-09

BeyondComparePro v4.1.5.21031 绿色精简中文版 x64

BeyondComparePro v4.1.5.21031 绿色精简中文版 x64,是非常实用的文件及文件夹对比工具,不仅可以快速比较出两个文件夹的不同之处,还可以详细的比较文件之间的内容差异,并将差异以颜色标示。程序内建了文件浏览器,方便您对文件、文件夹、压缩包、FTP 网站之间的差异对比以及资料同步。您可以使用它管理程序源代码,同步文件夹,比较程序输出,及验证光盘的复制。它还支持脚本处理、支持插件,尤其对中文支持很好。

2018-07-19

BeyondComparePro v4.1.5.21031 绿色精破解版 x64

BeyondComparePro v4.1.5.21031 绿色精简优化版 x64,Beyond Compare 是一套由 Scooter Software 推出的非常实用的文件及文件夹对比工具,丌仅可以快速比较出两个文件夹的丌同之处,还可以详细的比较文件之间的内容差异,并将差异以颜色标示。程序内建了文件浏览器,方便您对文件、文件夹、压缩包、FTP 网站之间的差异对比以及资料同步。您可以使用它管理程序源代码,同步文件夹,比较程序输出,及验证光盘的复制。它还支持脚本处理、支持插件,尤其对中文支持很好。

2018-06-25

j-link v8固件烧录工具和教程,解决keil5提示升级的问题

这个压缩包里的文件中,有两个bin固件,烧录的时候可以选择,有一个会提示升级,另一个不会提示。里面有txt文档说明。烧录教程在docx文档里面,请严格按照教程操作(操作失败了可以从头再来,jlink没那么容易坏)

2018-05-02

JLINKV8固件升级

JLINKV8重新烧写解决灯不亮USB不识别问题,完美解决升级失败导致jlink不可用的故障,但需要打开板子,连接对应的程序擦除或者程序下载端口,压缩包里有详细的操作说明

2018-04-04

Linux C编程一站式学习(宋劲杉编著word版本)

本压缩包里面是一个word文档,目录如下 目录 目录 1 历史 11 第 1 章 程序的基本概念 1 1. 程序和编程语言 2 习题 4 2. 自然语言和形式语言 5 3. 程序的调试 7 4. 第一个程序 8 习题 10 第 2 章 常量、变量和表达式 11 1. 继续Hello World 12 C语言标准 12 2. 常量 15 习题 15 3. 变量 16 声明和定义 16 4. 赋值 17 5. 表达式 19 习题 22 6. 字符类型与字符编码 22 第 3 章 简单函数 24 1. 数学函数 25 C标准库和glibc 26 2. 自定义函数 27 3. 形参和实参 32 Man Page 35 习题 35 4. 全局变量、局部变量和作用域 36 第 4 章 分支语句 41 1. if语句 42 习题 44 2. if/else语句 44 习题 46 3. 布尔代数 46 习题 49 4. switch语句 51 第 5 章 深入理解函数 53 1. return语句 54 习题 57 2. 增量式开发 57 3. 递归 61 习题 66 第 6 章 循环语句 67 1. while语句 68 习题 69 2. do/while语句 70 3. for语句 70 4. break和continue语句 72 习题 73 5. 嵌套循环 74 习题 75 6. goto语句和标号 76 第 7 章 结构体 79 1. 复合类型与结构体 80 2. 数据抽象 84 习题 88 3. 数据类型标志 88 习题 90 4. 嵌套结构体 90 第 8 章 数组 92 1. 数组的基本概念 93 习题 95 2. 数组应用实例:统计随机数 96 习题 100 3. 数组应用实例:直方图 100 习题 101 4. 字符串 102 5. 多维数组 104 第 9 章 编码风格 108 1. 缩进和空白 109 2. 注释 112 3. 标识符命名 118 4. 函数 118 5. indent工具 119 第 10 章 gdb 121 1. 单步执行和跟踪函数调用 122 习题 129 2. 断点 130 习题 134 3. 观察点 135 4. 段错误 140 第 11 章 排序与查找 144 1. 算法的概念 145 2. 插入排序 145 3. 算法的时间复杂度分析 148 4. 归并排序 150 习题 154 5. 线性查找 155 习题 156 6. 折半查找 157 习题 162 第 12 章 栈与队列 164 1. 数据结构的概念 165 2. 堆栈 165 3. 深度优先搜索 167 习题 175 4. 队列与广度优先搜索 175 习题 182 5. 环形队列 182 习题 183 第 13 章 本阶段总结 184 第 14 章 计算机中数的表示 186 1. 为什么计算机用二进制计数 187 2. 不同进制之间的换算 189 习题 190 3. 整数的加减运算 191 3.1. Sign and Magnitude表示法 191 3.2. 1's Complement表示法 191 3.3. 2's Complement表示法 193 3.4. 有符号数和无符号数 194 4. 浮点数 194 第 15 章 数据类型详解 197 1. 整型 198 Implementation-defined、Unspecified和Undefined 198 2. 浮点型 201 3. 类型转换 202 3.1. Integer Promotion 202 3.2. Usual Arithmetic Conversion 203 3.3. 由赋值产生的类型转换 204 3.4. 强制类型转换 204 3.5. 编译器如何处理类型转换 205 第 16 章 运算符详解 207 1. 位运算 208 1.1. 按位与、或、异或、取反运算 208 1.2. 移位运算 208 习题 209 1.3. 掩码 210 习题 210 1.4. 异或运算的一些特性 211 习题 211 2. 其它运算符 212 2.1. 复合赋值运算符 212 2.2. 条件运算符 212 2.3. 逗号运算符 212 2.4. sizeof运算符与typedef类型声明 213 3. Side Effect与Sequence Point 214 4. 运算符总结 216 习题 217 第 17 章 计算机体系结构基础 218 1. 内存与地址 219 2. CPU 219 3. 设备 222 4. MMU 224 5. Memory Hierarchy 226 第 18 章 x86汇编程序基础 230 1. 最简单的汇编程序 231 x86汇编的两种语法:intel语法和AT&T语法 234 习题 234 2. x86的寄存器 234 3. 第二个汇编程序 234 4. 寻址方式 237 5. ELF文件 238 5.1. 目标文件 239 5.2. 可执行文件 245 第 19 章 汇编与C之间的关系 249 1. 函数调用 250 习题 257 2. main函数和启动例程 258 3. 变量的存储布局 264 4. 结构体和联合体 270 习题 274 5. C内联汇编 274 6. volatile限定符 276 第 20 章 链接详解 282 1. 多目标文件的链接 283 2. 定义和声明 287 2.1. extern和static关键字 287 2.2. 头文件 291 2.3. 定义和声明的详细规则 295 3. 静态库 298 4. 共享库 301 4.1. 编译、链接、运行 301 4.2. 动态链接的过程 309 4.3. 共享库的命名惯例 312 5. 虚拟内存管理 314 第 21 章 预处理 320 1. 预处理的步骤 321 2. 宏定义 322 2.1. 函数式宏定义 322 2.2. 内联函数 325 2.3. #、##运算符和可变参数 327 2.4. 宏展开的步骤 330 3. 条件预处理指示 331 4. 其它预处理特性 334 第 22 章 Makefile基础 337 1. 基本规则 338 2. 隐含规则和模式规则 346 3. 变量 349 4. 自动处理头文件的依赖关系 353 5. 常用的make命令行选项 357 第 23 章 指针 358 1. 指针的基本概念 359 2. 指针类型的参数和返回值 362 习题 364 3. 指针与数组 364 4. 指针与const限定符 366 5. 指针与结构体 367 6. 指向指针的指针与指针数组 368 习题 370 7. 指向数组的指针与多维数组 370 习题 371 8. 函数类型和函数指针类型 371 9. 不完全类型和复杂声明 374 第 24 章 函数接口 379 1. 本章的预备知识 380 1.1. strcpy与strncpy 380 习题 384 1.2. malloc与free 384 习题 388 2. 传入参数与传出参数 389 3. 两层指针的参数 391 4. 返回值是指针的情况 394 5. 回调函数 396 习题 400 6. 可变参数 400 习题 404 第 25 章 C标准库 405 1. 字符串操作函数 407 1.1. 初始化字符串 407 1.2. 取字符串的长度 407 1.3. 拷贝字符串 407 C99的restrict关键字 409 1.4. 连接字符串 410 1.5. 比较字符串 411 1.6. 搜索字符串 412 1.7. 分割字符串 412 习题 416 2. 标准I/O库函数 416 2.1. 文件的基本概念 416 2.2. fopen/fclose 417 2.3. stdin/stdout/stderr 419 2.4. errno与perror函数 420 习题 422 2.5. 以字节为单位的I/O函数 422 习题 425 2.6. 操作读写位置的函数 425 2.7. 以字符串为单位的I/O函数 427 习题 428 2.8. 以记录为单位的I/O函数 428 2.9. 格式化I/O函数 430 2.10. C标准库的I/O缓冲区 436 2.11. 本节综合练习 439 3. 数值字符串转换函数 441 4. 分配内存的函数 444 第 26 章 链表、二叉树和哈希表 445 1. 链表 446 1.1. 单链表 446 习题 453 1.2. 双向链表 453 1.3. 静态链表 459 1.4. 本节综合练习 459 2. 二叉树 460 2.1. 二叉树的基本概念 460 习题 467 2.2. 排序二叉树 467 3. 哈希表 472 习题 474 第 27 章 本阶段总结 475 第 28 章 文件与I/O 1 1. 汇编程序的Hello world 2 2. C标准I/O库函数与Unbuffered I/O函数 3 关于UNIX标准 5 3. open/close 6 习题 9 4. read/write 9 5. lseek 14 6. fcntl 15 7. ioctl 19 8. mmap 19 第 29 章 文件系统 24 1. 引言 25 2. ext2文件系统 25 2.1. 总体存储布局 25 2.2. 实例剖析 29 习题 36 2.3. 数据块寻址 36 2.4. 文件和目录操作的系统函数 37 3. VFS 41 3.1. 内核数据结构 41 3.2. dup和dup2函数 43 第 30 章 进程 45 1. 引言 46 2. 环境变量 47 3. 进程控制 50 3.1. fork函数 50 3.2. exec函数 54 3.3. wait和waitpid函数 58 习题 60 4. 进程间通信 61 4.1. 管道 61 习题 64 4.2. 其它IPC机制 64 5. 练习:实现简单的Shell 65 第 31 章 Shell脚本 67 1. Shell的历史 68 2. Shell如何执行命令 69 2.1. 执行交互式命令 69 习题 70 2.2. 执行脚本 70 习题 72 3. Shell的基本语法 72 3.1. 变量 72 3.2. 文件名代换(Globbing):* ? [ ] 73 3.3. 命令代换:`或 $( ) 74 3.4. 算术代换:$(( )) 74 3.5. 转义字符\ 74 3.6. 单引号 75 3.7. 双引号 75 4. bash启动脚本 76 4.1. 作为交互登录Shell启动,或者使用--login参数启动 76 4.2. 以交互非登录Shell启动 77 4.3. 非交互启动 77 4.4. 以sh命令启动 78 5. Shell脚本语法 78 5.1. 条件测试:test [ 78 5.2. if/then/elif/else/fi 80 5.3. case/esac 81 5.4. for/do/done 82 5.5. while/do/done 83 习题 83 5.6. 位置参数和特殊变量 83 5.7. 函数 84 6. Shell脚本的调试方法 85 第 32 章 正则表达式 87 1. 引言 88 2. 基本语法 89 3. sed 91 4. awk 94 5. 练习:在C语言中使用正则表达式 95 第 33 章 信号 96 1. 信号的基本概念 97 2. 产生信号 98 2.1. 通过终端按键产生信号 98 2.2. 调用系统函数向进程发信号 99 2.3. 由软件条件产生信号 100 3. 阻塞信号 101 3.1. 信号在内核中的表示 101 3.2. 信号集操作函数 102 3.3. sigprocmask 102 3.4. sigpending 103 4. 捕捉信号 104 4.1. 内核如何实现信号的捕捉 104 4.2. sigaction 105 4.3. pause 106 4.4. 可重入函数 107 4.5. sig_atomic_t类型与volatile限定符 108 4.6. 竞态条件与sigsuspend函数 111 4.7. 关于SIGCHLD信号 113 第 34 章 终端、作业控制与守护进程 114 1. 终端 115 1.1. 终端的基本概念 115 1.2. 终端登录过程 116 1.3. 网络登录过程 118 2. 作业控制 119 2.1. Session与进程组 119 2.2. 与作业控制有关的信号 121 3. 守护进程 123 第 35 章 线程 127 1. 线程的概念 128 2. 线程控制 128 2.1. 创建线程 128 2.2. 终止线程 130 3. 线程间同步 133 3.1. mutex 133 3.2. Condition Variable 138 习题 141 3.3. Semaphore 141 习题 143 3.4. 其它线程间同步机制 143 4. 编程练习 143 第 36 章 TCP/IP协议基础 145 1. TCP/IP协议栈与数据包封装 146 2. 以太网(RFC 894)帧格式 149 3. ARP数据报格式 150 4. IP数据报格式 151 5. IP地址与路由 152 6. UDP段格式 157 7. TCP协议 159 7.1. 段格式 159 7.2. 通讯时序 160 7.3. 流量控制 162 第 37 章 socket编程 164 1. 预备知识 165 1.1. 网络字节序 165 1.2. socket地址的数据类型及相关函数 165 2. 基于TCP协议的网络程序 167 2.1. 最简单的TCP网络程序 168 2.2. 错误处理与读写控制 173 习题 178 2.3. 把client改为交互式输入 178 2.4. 使用fork并发处理多个client的请求 181 2.5. setsockopt 182 2.6. 使用select 183 3. 基于UDP协议的网络程序 185 4. UNIX Domain Socket IPC 188 5. 练习:实现简单的Web服务器 193 5.1. 基本HTTP协议 194 5.2. 执行CGI程序 196

2018-01-23

Linux C编程一站式学习

本书有两条线索,一条线索是以Linux平台为载体全面深入地介绍C语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识C语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识C语言。., 本书适合做零基础的初学者学习C语言的第一本教材,帮助读者打下牢固的基础。有一定的编程经验但知识体系不够完整的读者也可以对照本书查缺补漏,从而更深入地理解程序的工作原理。本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一,也适合作为高等院校程序设计基础课程的教材。本书对于C语言的语法介绍得非常全面,对C99标准做了很多解读,因此也可以作为一本精简的C语言语法参考书。...

2018-01-02

74ALVC164245DGG技术资料

74ALVC164245DGG

2017-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除