编程小记
文章平均质量分 60
迎風吹頭髮
这个作者很懒,什么都没留下…
展开
-
C语言中在main函数之后运行的函数
atexit注册终止处理函数的库函数原创 2024-02-08 15:41:58 · 767 阅读 · 0 评论 -
组播ip地址转换为组播mac地址
在ipv4_to_multicast_mac函数中,将ipv4_address的各个字节按照规定计算出组播MAC地址,然后将结果存入multicast_mac数组中。这个实现省略了struct ipv4结构体,直接将ipv4地址作为四个unsigned char类型的数字传入ipv4_to_multicast_mac函数。接着调用ipv4_to_multicast_mac函数计算ipv4_address对应的组播MAC地址,并将结果存入multicast_mac数组中。与前面的实现相同,输出结果正确。翻译 2023-05-23 23:34:54 · 1436 阅读 · 0 评论 -
CC2540 看门狗使用
其实很简单;首先 定义 看门狗的初始化/*WDCTL = 0x00; //Turn on IDLE to set the watchdogWDCTL |= 0x08;//The timer interval is set to one second*/#define HAL_SYSTEM_WATCH_DOG_1000MS() st(WDCTL = 0x00;WDCTL |=0x0...原创 2019-05-06 17:58:13 · 437 阅读 · 0 评论 -
CC2640R2f片上OAD工程简单说明
CC2640R2f片上OAD工程简单说明一下,分别对应的bim,这个使用IDE编译,然后烧写进板子就行了然后编译协议栈,然后再编译onchip_app,会生成两个文件,一个是merged.bin,这个是app+stack,一个就是oad.bin,这是app,升级可以直升级这个app即可,...原创 2019-05-06 10:38:22 · 1135 阅读 · 1 评论 -
CC2640R2F BLE5.0 CC2640R2F增加一个具有通知属性的characteristic
CC2640增加一个具有通知属性的characteristic介绍本章使用simple_peripheral作为实验平台。创建一个自定义属性的characteristic。simple_peripheral的IAR工程可以在目录C:\ti\simplelink_cc2640r2_sdk_1_35_00_33\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\s...转载 2019-04-25 18:12:47 · 381 阅读 · 0 评论 -
CC2640串口收发
CC2640的串口收发很容易,直接调用协议栈中的几个函数即可/* Call driver init functions */ GPIO_init(); UART_init(); /* Create a UART with data processing off. */ UART_Params_init(&uartParams); uar...原创 2019-05-08 16:58:52 · 1289 阅读 · 0 评论 -
CC2640定义一个周期性事件
1.Application events//定义一个时间#define SP_EVT 102.Clock instance for internal periodic events//定义一个时钟结构体变量static Clock_Struct SP_clk;3.Create one-shot clock event//开启这个时钟,10...原创 2019-04-25 14:28:41 · 539 阅读 · 0 评论 -
纯C语言的一个模拟定时器程序
简单的C语言模拟定时器,循环时间+绝对时间,根据《精通UNIX下C语言编程与项目实践》书上的例子搬过来的,挺好的,可能以后有用#include<stdio.h>#include<time.h>#define MAXTIMER 20typedef struct stuSimTimer{ char szName[20];//定时器名称 int nIn...原创 2019-05-08 11:09:41 · 4342 阅读 · 0 评论 -
CC2640R2F工程之间相互转换
在使用CC2640R2F的时候发现一个现象,就是在低版本的SDK中有一些工程,到了高版本中SDK就没有了,比如:simplelink_cc2640r2_sdk_1_40_00_45中有multi_rolesimplelink_cc2640r2_sdk_2_40_00_32 中则没有了multi_role,于是我打算自己动手修改simple_peripheral +simple_ce...原创 2019-04-24 14:56:47 · 827 阅读 · 5 评论 -
CC2640定义一个周期性事件的步骤
1、定义一个时钟结构体 static Clock_Struct clk_spa;2、将周期性事件ID传递给时钟处理程序的内存 // Application events #define SP_STATE_CHANGE_EVT 0 #define SP_CHAR_CHANGE_EVT 1...原创 2019-04-19 11:57:50 · 777 阅读 · 0 评论 -
C语言利用time函数实现简单的定时器
利用C语言中的time函数,实现一个一秒间隔的打印,其实很简单#include <stdio.h>#include <time.h>int main(int num, char* arg[]){ int duration = 1; time_t start, current = 0; while(1){ t...原创 2019-04-28 10:31:58 · 17827 阅读 · 5 评论 -
CC2640R2f模拟uart
想要使用2640模拟串口,发送信息,程序如下://定义句柄static PIN_Handle Uart_PinsHandle = NULL;static PIN_State My_state;//引脚的配置数组PIN_Config MyBoardPinsCfg[] ={ CC2640R2_LAUNCHXL_UART_TX | PIN_GPIO_OUTPUT_EN | PI...原创 2019-05-14 16:51:57 · 660 阅读 · 0 评论 -
教你如何在51单片机上模拟串口通信!!!
教你如何在51单片机上模拟串口通信!!!转载:原文地址https://www.cnblogs.com/zhenghaoyu/p/10059848.html我们可以不使用单片机本身带有的串口,而自己用程序去模拟一个串口并达到和本身的串口具有同样的功能,首先,我们需要用到CH340串口模块,大家可以上某宝自行购买。正面:反面:然后我们需要了解一下这串口模块上的引脚...转载 2019-05-14 16:59:29 · 5398 阅读 · 1 评论 -
CC2640修改Profile实现蓝牙发送回传
CC2640修改Simple GATT Profile Service通过修改特征值Characteristic 4,实现手机使用Ble软件 发送字符串命令给开发板,开发板收到对应命令后,也发送对应字符串给手机。Declaration总是属性的值之前,描述了价值属性是否可以读取或写入 首先找到simple_gatt_profile.c文件,找到// Simple...原创 2019-05-07 16:44:38 · 949 阅读 · 0 评论 -
折半查找
折半查找,速度很快,但是需要被查找的对象是已经排好序的,简单的说就是,用被查找的数据和中间值进行比较,例如start,mid,endnum,如果num的值比mid大,说明num在mid的右边,那么就把start赋值位mid+1;如果num的值比mid小,说明num在mid的左边,那么就把end赋值位mid-1;道理就是这样,下面是代码#include<stdio...原创 2019-06-28 11:05:14 · 155 阅读 · 0 评论 -
Linux下Sniffer程序的实现
参考了文章:https://www.cnblogs.com/shanlilang/articles/2722729.html不过代码是我自己写的。理论可以去点击上面的文章,#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include&l...原创 2019-06-11 18:15:49 · 820 阅读 · 0 评论 -
STM32液晶显示HT1621驱动原理及程序代码
原贴地址:https://www.cnblogs.com/lemonzhang/p/9239172.html1、HT1621电路分析 HT1621为32×4即128点内存映像LCD驱动器,包含内嵌的32×4位显示RAM内存和时基发生器以及WDT看门狗定时器. HT1621驱动电路如下图所示:与单片机相连接控制的有9脚CS,3脚WR,12脚DATA,其功能...转载 2019-06-11 10:06:04 · 9833 阅读 · 1 评论 -
linux下使用原始套接字实现ping的功能
linux下使用原始套接字实现ping的功能:下面是在网上 抄的,#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <sys/types.h>#...转载 2019-06-14 10:41:55 · 406 阅读 · 0 评论 -
简易HTTP代理服务器
这是一个简易的HTTP代理服务器:功能:1.解析HTTP请求包,在客户浏览器和目标地址之间转发数据2.屏蔽非HTTP报文转发,只支持网页浏览代理3.启用多进程并发套接字模型,同时代理多个客户端浏览网页在网上抄来的#include <stdio.h>#include <stdlib.h>#include <unistd.h>...转载 2019-06-14 10:40:22 · 821 阅读 · 0 评论 -
C语言使用QRcode生成二维码
C语言使用QRcode生成二维码的简单操作首先需要QRcode源码包可以参考这位大神的文章:https://blog.csdn.net/qq_21475601/article/details/71480028下面是我的代码:生成的话 只需要源码的三个文件 分别是 data_type.h,QR_Encode.c,QR_Encode.hint main(void){...原创 2019-05-31 14:18:37 · 9806 阅读 · 2 评论 -
命令行实现进度条
命令行实现进度条这里写一个简单的例子,仅供参考:#include <stdio.h>char tx[] = "▉";char buf[100] = "";char *p = buf;int main(int argc, char *argv[]){ int i; memset(buf,' ',100); for(i=0;i<...原创 2019-05-31 11:27:12 · 485 阅读 · 0 评论 -
CC2640使用内置温度传感器
参考:https://blog.csdn.net/zzfenglin/article/details/53915545#include <ti/devices/cc26x0r2/driverlib/aon_batmon.h>/** ======== mainThread ========* Task periodically increments the PWM d...原创 2019-05-20 17:48:55 · 618 阅读 · 0 评论 -
crc16
看到一个很不错的crc16的函数,顺便写了一个小小的测试例子:#include<stdio.h>#define uint16_t unsigned short#define uint8_t unsigned char/*****************************************************************************...原创 2019-05-20 16:19:35 · 418 阅读 · 0 评论 -
普通延时函数实现按键的长按与短按
原文链接:https://blog.csdn.net/ohy3686/article/details/82589873题目要求】用一个按键实现长按与短按的功能已经是很多嵌入式产品的常用手法。使用定时器的间隔定时来计算按键按下的时间是通用的做法,然而对于不太熟悉定时器使用,又没有严格的延时长度的情况下,使用普通的延时函数实现长短按键的区分也是一个不错的选择。按键SW1短按的时候,切...转载 2019-04-18 10:33:09 · 4311 阅读 · 0 评论 -
普通延时函数实现按键的单击与双击
原文地址:https://blog.csdn.net/ohy3686/article/details/82726250题目要求】用一个按键实现单击与双击的功能已经是很多嵌入式产品的常用手法。使用定时器的间隔定时来计算按键按下的时间是通用的做法,然而,使用普通的延时函数实现按键单击与双击的区分也是一个快速的处理手段。按键SW1单击的时候,切换D3灯的开关状态;按键SW1双击的时候,...转载 2019-04-22 17:08:03 · 1185 阅读 · 0 评论 -
一个不重复的随机数发生函数
#include <stdio.h>#include <stdlib.h>#define MAX 78//最大值78#define MIN 0//最小值0#define N 40//需要多少个不重负的随机数int func_random(int *a){ srand(1); int RandNum; int i, j, flag ...原创 2019-02-28 10:02:41 · 492 阅读 · 0 评论 -
把16进制直接变成str字符串16进制
//----------------------------------------------------------#include <stdio.h>#include <string.h>#include <stdlib.h>char* Hex_2_str(unsigned char *p,int len) { char *buf = ...原创 2019-02-21 15:59:43 · 1190 阅读 · 0 评论 -
把结构体与数组之间的转换
二维数组和一维数组的转换很简单,直接是强制转换即可,例如:#include<stdio.h>#include<string.h>unsigned char aa[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};int main(){ int i; for(i = 0;i <...原创 2019-01-23 17:33:04 · 10469 阅读 · 0 评论 -
CC2640 TI-RTOS的重启函数
在进行CC2640开发的时候,很多时候需要使用到系统重启,下面给出我在TI官方代码中找到的重启函数SysCtrlSystemReset();但是该函数使用时需要以下头文件#include <ti/devices/DeviceFamily.h>#include DeviceFamily_constructPath(driverlib/sys_ctrl.h)如果包含了以下...原创 2019-01-23 15:50:16 · 1567 阅读 · 0 评论 -
CC2640获取自身MAC地址函数
CC2640获取自身MAC地址函数:其实函数很简单:printf("RP Addr: %s",Util_convertBdAddr2Str(GAP_GetDevAddress(TRUE)));但是要放到 初始化后面即可原创 2019-01-16 18:45:09 · 937 阅读 · 0 评论 -
CC2640之配对与绑定
CC2640之配对与绑定参考了https://blog.csdn.net/weixin_43172567/article/details/83617194这篇文章以下是经过我自己的写的代码实现过程,亲测可用使用TI官方协议栈里面的程序主要修改的源程序文件有是simple_gatt_profile.c主要变量和函数修改:1、接受和发送数据长度修改#define Ble_length...原创 2019-01-22 14:35:43 · 516 阅读 · 0 评论 -
CC2640特征值加密
参考文章网址https://blog.csdn.net/feilusia/article/details/50212945其实道理也很简单,BLE蓝牙是先连接,后配对,所以在连接超时的这一段时间里面主机是可以读取从机的特征值信息的,但是如果为从机的特征值加密以后,则配对不成功便无法读取从机的特征值信息;那么如何为特征值加密呢?特别简单,在simple_gatt_profile....原创 2019-01-24 16:48:57 · 422 阅读 · 0 评论 -
如何设置结构体所占字节不对齐
其实很简单:typedef struct{ int a; char b;}__attribute__((packed)) data_t;然后使用 data_t 进行定义结构体变量即可:例如 :data_t a;printf("%d\n",sizeof(a));结果为:5#include<stdio.h>typedef struct{...原创 2019-01-24 15:32:11 · 2038 阅读 · 0 评论 -
CC2640使用snv保存信息
TI在协议栈中提供了两个标准函数用于写入和读取信息的函数,分别是:uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf)两个函数的返回值皆为两种情况 SUCCESS 和 NV...原创 2019-01-24 15:06:22 · 1353 阅读 · 0 评论 -
段码液晶屏实现原理和需要注意的事项
断码液晶显示屏和普通的液晶显示屏的区别就是像素点比较少,比如这样的额,(图片来自百度百科)液晶屏显示的的原理大家自己可以去百度,简单地说就是电压差改变了屏幕的透光度,就显示出了图案,断码液晶屏通常是使用驱动芯片例如HT1622/1621/16220等,这样的驱动芯片可以扩展MCU的IO,同时产生正向和逆向的电压差点亮屏幕,下面的历程就是我在STM32上,使用HT1621点亮断码液晶...原创 2018-12-29 14:31:51 · 8328 阅读 · 0 评论 -
IAP+APP程序拼接方法,及相关拓展内容
原创:strongerHuangEmbeddDeveloper昨天置顶/星标公众号,不错过每一条消息! 今天这个话题,相信有工作经验的朋友都知道。这里,我也简单普及一下相关内容。1写在前面在产品量产时,产品具有IAP和APP两部分程序时,一般需要拼接成一个量产程序文件。有人肯定会好奇,为什么要拼接成一个程序文件呢?这个答案很简单...转载 2019-02-28 10:53:56 · 404 阅读 · 0 评论 -
怎样把 16进制的字符串 转换成int型
比方说;有一个字符串 char buf[10] = "ab68937420";我想把他们放到 unsigned char num[5]中,使num[0] = 0xab;num[1] = 0x68;num[2] = 0x93;num[3] = 0x74;num[4] = 0x20;应该怎样写程序呢,方法有很多,下面给以一段我写的小例子://--------------...原创 2019-02-13 17:26:23 · 6314 阅读 · 0 评论 -
在TI的SDK工程中添加POSIX支持
偶然看到TI的文档的截图那么如果要是有POSIX支持的SDK下面编程,一定很爽,于是对比了一下TI提供的工程实例,首先是头文件有了头文件支持,但是编译还是过不去于是看配置文件里面有一个 POSIX configuration于是赶紧再ble的工程添加它就是下面的这个配置/* ================ POSIX configuration ====...原创 2019-04-26 15:09:06 · 552 阅读 · 0 评论 -
IP地址字符串转换成16进制例程
写程序的时候经常遇到一个输入IP地址的情况,例如输入192.168.1.123,需要转换成对应的十六进制c0 a8 01 7b,所以就自己写了一个小demo,原理也很简单,就是检测输入的字符串中的"."的位置,然后分别提取出来进行转换,下面给出一个历程:/* author : ez date : 2015/7/11 describe : Convert IP string into...原创 2019-04-03 11:34:30 · 7098 阅读 · 0 评论 -
写一个计算运行时间的小程序
这是一个临时产生的一个想法,例如我使用一个单片机的时候,我想知道这个单片机已经运行多长时间了,那么就给它发个命令,然后他返回他运行的时间,当然这个程序写起来也很容易,我在电脑上写了一个小的demo进行模拟,时间单位只使用到天,100年才三万多天,所以时间是足够用的,废话不多,上程序#include<stdio.h>char *run_time_func_demo(){...原创 2019-04-02 18:22:27 · 730 阅读 · 0 评论