单片机&单片机C语言技巧
绿叶清风
这个作者很懒,什么都没留下…
展开
-
C利用宏定义LOG打印思路
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#define LOGD(format, args...) log_debug(format, ##args, __FILE__, __LINE__)void log_debug(char* p,...){ char buf[256] = {0}; va_list list; va_start(list, p); .原创 2020-07-15 16:21:49 · 589 阅读 · 0 评论 -
STM32可用的QRCODE二维码生成库
近期的一个项目中要用到qrcode来传送一些讯息,因此跑去找了下方法顺便问问其他人,大多数都是PY或者Java的类库,C语言少得可怜。最后找到了这个库,在github上开源发布:https://github.com/fukuchi/libqrencode它的作者设计用在Linux上面。是作为可执行文件来运转并产生二维码的,因此试着缩减了一些不用的功能,减去主转载 2017-06-08 10:49:20 · 4994 阅读 · 3 评论 -
在单片机实现数字型转换为字符型(itoa函数的实现)
//反转字符串char *reverse(char *s){ char temp; char *p = s; //p指向s的头部 char *q = s; //q指向s的尾部 while(*q) ++q; q--; //交换移动指针,直到p和q交叉 while(q > p) {转载 2017-05-09 22:47:34 · 17260 阅读 · 4 评论 -
谈谈#define st(x) do { x } while (__LINE__ == -1) 的理解
最近在学习TI 的ZigBee协议栈,其中发现了一个问题:#define HAL_ENTER_CRITICAL_SECTION(x) st( x = EA; HAL_DISABLE_INTERRUPTS(); )#define HAL_EXIT_CRITICAL_SECTION(x) st( EA = x; )其中st(x)应作何解释?#define st(x) d转载 2017-03-21 17:35:01 · 972 阅读 · 0 评论 -
C 语言实现函数回调
void (*callback_fun)(int);void test_function(int a){ printf("enter...... test_function..... %d \r\n",a);}int main(int argc, const char * argv[]) { callback_fun = test_functio原创 2017-02-22 15:01:53 · 650 阅读 · 0 评论 -
C语言中strstr函数的简单实现
在C语言中库函数strstr()函数表示在一个字符串str1中查找另一个字符串str2,如果查到则返回str2在str1中首次出现的位置,如果找不到则返回null。char* strstr(char* str,char* s){ int n; if(*s != '\0'){ while(*str){ for(n=0;(*str+n原创 2017-02-22 23:17:01 · 1574 阅读 · 0 评论 -
UART串口软件接口的设计与分析
在利用UART进行数据操作之前,先来了解UART的操作过程是怎样的。(1)设置I/O连接到UART。(2)设置串口波特率。(3)发送或接收数据。(4)检查串口状态字或等待串口中断。关于串口的操作主要由以下几个函数来实现。1.串口初始化函数UARTInit(uint32_t baudrate)UARTInit函数根据从主程序传递的参数——波特率对串口进行初始化,包括对数据转载 2017-02-22 22:11:08 · 1657 阅读 · 0 评论 -
C语言将int型数据转换为十六进制的字符串
方法一:int i =0;char * inttohex(int aa,char *buffer){ if (aa < 16) //递归结束条件 { if (aa < 10) //当前数转换成字符放入字符串 buffer[i] = aa + '0'; else原创 2017-02-21 11:31:33 · 17357 阅读 · 0 评论 -
在8位单片机上面实现字符串的拼接(单片机上strcat的函数的实现)
//// main.c// Test//char *my_strcat(char *str1, char *str2){ char *pt = str1; while(*str1!='\0') str1++; while(*str2!='\0') *str1++ = *str2++; *str1 = '\0'; return pt;}原创 2017-02-20 18:08:07 · 8303 阅读 · 0 评论 -
在8位单片机上实现JSON数据的简单解析(单片机解析JSON)
由于在一些低配的单片机上面不能直接使用C提供的系统库,项目中又需要解析服务器返回的JSON数据,以下代码可以简单的解析出JSON数据中的key://// main.c// Test///*************************************** 一些系统函数的简单实现 **********************原创 2017-02-20 17:56:58 · 8322 阅读 · 3 评论