1.延时程序
/**************************************************************************** * 函 数 名: DelayMS_16M() * 功 能: 以毫秒为单位延时,系统时钟不配置时默认为16M(用示波器测量相当精确) * 入口参数: msec 延时参数,值越大,延时越久 * 出口参数: 无 ****************************************************************************/ void DelayMS(uint16 msec) { uint16 i,j; for (i=0; i<msec; i++) for (j=0; j<535; j++); } /**************************************************************************** * 函 数 名: DelayMS_32M() * 功 能: 以毫秒为单位延时,系统时钟为32MHz * 入口参数: msec 延时参数,值越大,延时越久 * 出口参数: 无 ****************************************************************************/ void DelayMS(uint msec) { uint i,j; for (i=0; i<msec; i++) for (j=0; j<1070; j++); }
2.十六进制转字符串
/**************************************************************************** * 函 数 名: Hex_To_Str() * 功 能: 十六进制进制转字符串 * 入口参数: pHex:十六进制的数据 * len:数据长度 * 出口参数: str:修改后的字符串 ****************************************************************************/ char* Hex_To_Str( uint8 *pHex,uint8 len ) { char hex[] = "0123456789ABCDEF"; static char str[100]; char *pStr = str; for ( uint8 i = 0; i < len; i++ ) { *pStr++ = hex[*pHex >> 4]; *pStr++ = hex[*pHex++ & 0x0F]; } return str; }
3.获取本机蓝牙地址
/**************************************************************************** * 函 数 名: Read_Mac() * 功 能: 读取本机MAC * 入口参数: *ownAddress:存放地址变量 * 出口参数: 无 ****************************************************************************/ static void Read_Mac(uint8 *ownAddress) { ownAddress[5] = *(unsigned char *)(0x780E); // 直接指向指针内容 ownAddress[4] = *(unsigned char *)(0x780F); ownAddress[3] = *(unsigned char *)(0x7810); ownAddress[2] = XREG(0x7811); ownAddress[1] = XREG(0x7812); ownAddress[0] = XREG(0x7813); }
4.随机数发生器(8位)
/**************************************************************************** * 函 数 名: random_numCB() * 功 能: 8位随机数产生器 * 入口参数: 无 * 出口参数: 8位随机数 ****************************************************************************/ static uint8 random_numCB() { uint8 random_num = 0; ADCCON1 |= 0x04; random_num = RNDL; return( random_num ); }
5.串口打印函数
/**************************************************************************** * 函 数 名: printf() * 功 能: 打印函数 * 入口参数: 需要打印的字符串 * 出口参数: ulLen:打印的字符串长度 ****************************************************************************/ int printf(const char*fmt, ...) { uint32 ulLen; va_list ap; char *pBuf = (char*)osal_mem_alloc(50); //开辟缓冲区 va_start(ap, fmt); ulLen = vsprintf(pBuf, fmt, ap); //用虚拟打印函数实现 va_end(ap); osal_pwrmgr_device(PWRMGR_ALWAYS_ON); //不开启低功耗功能 HalUARTWrite(NPI_UART_PORT, (uint8*)pBuf, ulLen); //从串口x输出 osal_mem_free(pBuf); //释放内存空间 return ulLen; }