- 博客(19)
- 资源 (5)
- 收藏
- 关注
原创 volatile和线程安全
1.volatile的作用,防止编译器优化。例如一个线程需要操作一个全局变量,为了使得效率更高,它会把这个全局变量首先加载到通用寄存器中,以后再次操作这个全局变量的时候,他将直接从寄存器中取出数据,而不是这个变量的实际地址处得到数据。假如在这期间一个线程或者一个中断打断了程序的执行,并且把这个全局变量的值改了。再回到先前的线程,他将取得一个过期的数据,这显然不是我们想要的。一般说来,volatile 用在如下的几个地方:1) 中断服务程序和其他任务共享的变量应该加 volatile。2) 多任务环境下
2022-02-20 18:55:41 891
原创 解决grpc以及子模块无法下载问题
由于国内网络访问github受限需要用镜像访问和下载仓库git clone -b v1.40.0 https://github.com.cnpmjs.org/grpc/grpc修改.gitmodules文件的子模块url为对应的https://github.com.cnpmjs.org/xxxgit submodule update --initgit submodule sync(子模块更新不成功执行此命令)修改./third_party/bloaty/.gitmodules子模块url为
2021-09-30 14:46:12 1724
原创 VSCode离线安装C/C++插件以及依赖包
网上有很多关于VSCode离线安装C/C++插件的博客,在这里我就不加累述了,其实完成这一步,插件还并不能正常使用。因为插件还有许多依赖包需要联网下载,如果电脑没有联网的话,将会下载依赖包超时Updating C/C++ dependencies... Downloading package Error:解决办法如下:1.找到你安装vscode.cpptools插件的目录:一般是C:\User...
2019-01-12 21:09:38 26495 8
原创 串口uart中断方式和查询方式的选择以及高效实现(循环FIFO)
串口uart中断方式和查询方式的选择以及高效实现1. 中断方式和查询方式的选择(1) 串口中断方式相比查询方式效率要高。串口传输速率比较慢。比如对于系统时钟为100MHz的MCU,串口波特率为115200。传输一个字节大概需要10000个时钟周期,所以系统大部分的时间都是在等着收数据或者发数据。如果用中断方式,可以在系统接收和发送数据的间隙去处理一些其他的命令。(2) 串口中断方式...
2019-01-12 15:38:52 4835 2
原创 SHA1--C语言实现--openssl-1.1.1改写(自动匹配芯片大小端)
改写自 openssl-1.1.1的SHA1的C语言实现,高效,自动匹配处理器大小端# define SHA_LBLOCK 16# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a * contiguous array...
2018-11-03 20:28:18 1073
原创 C语言编程规范
C语言编程规范.pdfC语言国际规范-ISO/IEC 9899:201x.pdf1 排版1.1 程序块缩进风格程序块要采用缩进风格编写,缩进的空格数为 4 个,对齐只使用空格键,不使用 TAB 键。以免用不同的编辑器阅读程序时,因 TAB 键所设置的空格数目不同而造成程序布局不整齐。1.2 程序中的空行相对独立的程序块之间、变量说明之后必须加空行。示例:如下例子不符合规...
2018-07-26 20:15:36 1518
原创 C语言宏中的do{}while(0)和语句表达式
C语言宏中的do{}while(0)和语句表达式1. 宏中的do{}while(0)请看下面一段代码:#include <stdio.h>#define swap(a, b) {int t = a; a = b; b = t;}int main(void){ int x = 1; int y = 2; int z = 3;...
2018-07-26 19:50:40 826
原创 将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式
//将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式1 string BytesTo16Str(byte[] bytes) { string recData = ""; //创建接收数据的字符串 foreach (byte outByte in bytes)//将字节数组以16进制形式遍历到一个字符串内 ...
2018-07-22 22:18:08 498
原创 USB HID 驱动程序(非重叠IO操作)
using System;using System.Runtime.InteropServices;using Microsoft.Win32.SafeHandles;using System.Collections.Generic;using System.Windows.Forms;namespace MyUsbHid{ public class UsbHid ...
2018-07-22 22:13:06 1665
原创 循环队列-队列的顺序表示和实现3(linux内核实现)
/******************************************************************************/// 循环队列-队列的顺序表示和实现3(linux内核实现)/******************************************************************************/struct kfi...
2018-06-12 22:06:12 702
原创 循环队列-队列的顺序表示和实现2
/******************************************************************************/// 循环队列-队列的顺序表示和实现2// linux内核循环队列kfifo思想改编,性能超级高,FIFO性能优化的关键点:// 1.队列大小为2的幂是为了使x % M == x & (M-1) 为真,位与运算的效率要比求余数// ...
2018-06-12 22:04:11 242
原创 循环队列-队列的顺序表示和实现1
/******************************************************************************/// 循环队列-队列的顺序表示和实现1/******************************************************************************/#define Queue_SIZE ...
2018-06-12 22:01:52 443
原创 用位段、宏分别实现寄存器的位定义
用位段、宏分别实现寄存器的位定义1. 一个32位寄存器描述:中断使能寄存器(IER)寄存器位 名称 属性 复位值 描述 31 : 8 RFU —— 0x0 RFU(未被使用的位) 7 PTIME R/W 0x0 略 6:3 RFU —— 0x0 RFU 2 ELSI R/W 0x0 略 1 ETBEI R/W 0x0 略 0 ERBFI R/W ...
2018-06-04 21:11:19 1295
原创 去掉字符串中所有空格
//去掉字符串中所有空格-1 public static string RemoveBlank(string str) { string RetStr = str.Replace(" ", ""); return RetStr; } //去掉字符串中所有空格-2 public static string Re...
2018-05-28 21:39:17 1823
原创 按操作系统当前ANSI方式将16进制字符串解码为一个字符串
//按操作系统当前ANSI方式将16进制字符串解码为一个字符串 public static string Base16StrToStr(string Base16Str) { string outStr = ""; byte[] streamByte = Base16StrToBytes(Base16Str); outStr ...
2018-05-28 21:36:46 578
原创 byte数组以16进制形式转换为等效的字符串
//byte数组以16进制形式转换为等效的字符串 string BytesTo16Str(byte[] bytes) { string recData = ""; //创建接收数据的字符串 foreach (byte outByte in bytes)//将字节数组以16进制形式遍历到一个字符串内 { ...
2018-05-28 21:34:27 677
原创 16进制的数字的字符串表示形式转换为等效的byte数组
//16进制的数字的字符串表示形式转换为等效的byte数组 byte[] Base16StrToBytes(string strValues) { int len = strValues.Length / 2; int remainder = strValues.Length % 2; byte[] hexValues = n...
2018-05-28 21:32:09 434
原创 解决MDK keil汉语选中删除显示乱码的问题
解决MDK keil汉语选中删除显示乱码的问题.pdf解决MDK keil汉语选中删除显示乱码的问题keil汉语选中或者删除的时候,一个汉字需要删除两次,删除第一次会出现乱码。而且,复制粘贴也会出现乱码。网上看到一个解决办法不错,给大家共享出来。首先,下载“Consolas雅黑混合版编程字体”,然后解压安装。安装完成后打开keil,依次选择Edit->Configuration->Ed...
2018-05-26 19:06:47 1806
VSCode Cpptools依赖包
2019-01-12
C语言国际规范-ISO/IEC 9899:201x
2018-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人