
C语言
C语言相关
SimonLiu009
半导体行业多年从业经历。现从事AIoT独立研发。
展开
-
Arduino RGB 颜色渐变代码(附上C语言版本)
这段代码来自Smooth RGB LED Transitions with Johnny-Five - Arduino Project Hubconst int redPin = 11;const int greenPin = 10;const int bluePin = 9;void setup() { // Start off with the LED off. setColourRgb(0,0,0);}void loop() { unsigned int rgbColour[3];原创 2021-08-26 17:46:48 · 4535 阅读 · 12 评论 -
extern enum extern声明枚举的使用方法
例子:在a.h中定义枚举类型并声明extern枚举变量enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN};extern enum DAY day;在a.c中声明枚举变量enum DAY day在其它c文件中,#include "a.h"或者你也可以将a.h中省略extern枚举变量的语句,而是放到其它需要引用该变量的c文件中。...原创 2021-08-27 22:36:25 · 8027 阅读 · 1 评论 -
C语言生成指定长度的乱序数组
最近有个需求,需要动态生成一个不定长的乱序数组,用于每次生成一个指定长度随机播放列表(最长256)。于是有了下面一段测试代码:#include "stdlib.h"#include "stdio.h"#include "time.h"uint8_t play_list[256];void play_list_init(){ for (int i = 0; i < 256; i++) { play_list[i] = i + 1; }}vo原创 2021-08-24 21:14:33 · 1217 阅读 · 0 评论 -
0.96寸OLED像素排列、汉字显示和取模
以常见的128x64的OLED为例。我们常用的取模软件PC2LCD2002为例,字模选项设置如下:阴码逆向列行式十六进制C51格式一个16x16的宋体“联“字,取模结果是2行,每行16个字节:{0x02,0xFE,0x92,0x92,0xFE,0x02,0x00,0x10,0x11,0x16,0xF0,0x14,0x13,0x10,0x00,0x00},{0x10,0x1F,0x08,0x08,0xFF,0x04,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x原创 2020-06-19 13:42:47 · 6618 阅读 · 0 评论 -
C语言格式化输出日期时间
其实函数就那么几个,具体方法也不少,以下列出几种: char timestr[128]=""; time_t app_time_stamp = 0; //方法1 app_time_stamp = time( 0 ); strftime(timestr, 255, "%a, %d %b %Y %H:%M:%S GMT", localtime(&app_time_stam...原创 2020-04-23 17:22:44 · 10158 阅读 · 0 评论 -
C/C++分割字符串: strtok函数
C语言如何实现将字符串“A1234-E4566-SDFS”中‘-’分隔开的几个字串“A1234”“E4566”“SDFS”取出来?有个函数叫 strtok()#include <stdio.h>#include <string.h>int main(void){ char buf[] = "A1234-E4566-SDFS"; ...原创 2020-02-19 12:15:31 · 1294 阅读 · 0 评论 -
c语言输出编译时间日期行号文件名
打印固件编译日期时间printf(" Firmware compile time:%s %s\n", __DATE__, __TIME__);结果Firmware compile time:Feb 11 2020 19:41:48实现方法是使用C语言预定义宏。ANSIC标准定义了可供C语言使用的预定义宏:1、__ LINE__ : 在源代码中插入当前源代码行号2、__ FILE _...原创 2020-02-11 20:41:33 · 2474 阅读 · 0 评论 -
C语言extern全局变量避免重复定义
在example.c中int a = 0;在example.h中extern int a;然后其他c文件#include "example.h"就可以了。原创 2019-08-07 10:43:57 · 3916 阅读 · 1 评论 -
ESP32 MD5 代码
先写个伪代码,验证以后再来更新: #include "esp32/rom/md5_hash.h" struct MD5Context myContext; unsigned char string[] = "Some Data Here"; unsigned char data[16]; memset(myContext,0x00,sizeof(myC...原创 2019-08-06 12:03:08 · 2625 阅读 · 2 评论 -
E (527) uart: uart_set_hw_flow_ctrl(264): rx flow thresh error错误
最近在进行ESP32开发的时候,发现设备启动报了一个错误:E (527) uart: uart_set_hw_flow_ctrl(264): rx flow thresh error搜了一下,发现是结构体初始化风格的问题。原初始化代码 uart_config_t uart0_config; //串口参数配置->uart0 uart0_config.baud_rate = ...原创 2019-05-19 22:48:36 · 1445 阅读 · 0 评论 -
ESP8266 non_osuint32 ipaddr to ip[4] array ip地址转为char数组
ESP8266 non_os SDK编程的时候发现有个需求,就是把uint32类型的ip地址,转换为char数组。搜了半天网上有些人写了函数,但是似乎并不适合ESP8266 SDK。然后仔细研究了一下,终于找到了方法,如果大家有更简洁的方法,欢迎提出来。首先,ESP8266有个打印IP地址的方法:os_printf(&amp;amp;quot;IP Address :&amp;amp;quot;IPSTR&amp;amp;quot;\r\n&am原创 2019-01-14 13:50:15 · 1354 阅读 · 0 评论 -
从homebrew 安装 ctags 和 Cscope
这几天配置Visual Studio Code未完成的时候,尝试为Sublime Text 配置 ctags和Cscope,从homebrew安装ctags和Cscope命令如下:brew install ctagsbrew install Cscope安装之后的路径默认如下:/usr/local/Cellar/ctags/5.8_1/bin/ctags/usr/loca...原创 2018-12-27 18:27:40 · 1008 阅读 · 0 评论 -
Xcode DEBUG 宏定义报错
#define __DEBUG__#ifdef __DEBUG__#define DEBUG(format,...) printf("File: "__FILE__", Line: %05d: "format"/n", __LINE__, ##__VA_ARGS__)#else#define DEBUG(format,...)#endif以上在STM32 System Workbench 编译通过...原创 2018-04-26 13:42:33 · 2539 阅读 · 0 评论 -
1/sqrt(x)快速神奇算法来龙去脉,浮点数二进制表示和int二进制输出
昨天研究了一天网络上著名的平方根倒数快速神奇算法。代码如下:float Q_rsqrt( float number ){ long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; ...原创 2018-04-26 13:18:05 · 1743 阅读 · 0 评论 -
Xcode Apple Mach -O Linker (Id) Error
今天在Xcode下测试一个c程序,最开始折腾了半天DEBUG宏定义,终于修复,后来又出现Apple Mach -O Linker (Id) Error?Duplicate symbols for architecture x86_64 under Xcode这种提示,搜了很久找不到答案,最后发现是自己测试多个不同程序的时候,直接在同一个项目里面添加了另外一个c文件,里面也有一个 main()函数。...原创 2018-04-26 11:29:35 · 900 阅读 · 0 评论 -
malloc创建不定数量结构体并创建该结构体不定长度的成员数组
以下程序实现了使用malloc创建不定数量结构体,其内部的不定长成员数组也使用malloc创建。然后使用选择排序对成绩进行一个排名输出。本来想用qsort的,但是发现不定长数组使用qsort比较麻烦(好吧其实我不会)。以成绩单为例写了一个代码,在xcode 9.3 和 Apple LLVM version 9.1.0 (clang-902.0.39.1) 编译通过。//// main.c//...原创 2018-05-01 13:12:32 · 4308 阅读 · 0 评论