获得一个随机数(min~max)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static uint32_t rand_num_create(uint32_t min,uint32_t max)
{
uint32_t rand_num = 0;
srand((int)time(0));
rand_num = min + rand()%( max - min + 1);
return rand_num;
}
Printf函数封装(打印可变参数)
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include "bsp_dma_uart.h"
void bsp_debug_printf(char *fmt, ...)
{
char printf_buf[USART1_DMA_TX_LENTH] = {0};
va_list args;
va_start(args, fmt);
vsnprintf(printf_buf,USART1_DMA_TX_LENTH, fmt, args);
int i = 0,j = 0;
while(t_usart1_data_value.Tx_Dma_Busy_Flag && (j < 50000)){j++;}
while((DMA_GetFlagStatus(DMA1_FLAG_TC4) != RESET)&&(i < 50000) ){i++;}
t_usart1_data_value.Tx_Dma_Busy_Flag = 1;
memcpy(t_usart1_data_value.Usart1_Tx_Buf, printf_buf, strlen(printf_buf));
DMA_SetCurrDataCounter(DMA1_Channel4, strlen(printf_buf));
DMA_Cmd(DMA1_Channel4, ENABLE);
}
bsp_debug_printf("data_len:%d\r\n",t_rs485_buff.data_len);
数字转字符串算法
void app_misc_num_to_string(unsigned long int num,unsigned char *data )
{
int i = 0;
unsigned char *save_data = data;
while(num > 0)
{
*data = num%10 + 48;
data++;
i++;
num = num/10;
}
for(unsigned int j = 0;j < i/2;j++)
{
unsigned char tmp_char;
tmp_char = *(save_data + j);
*(save_data + j) = *(data-1-j);
*(data-1-j) = tmp_char;
}
}
数字转字符串
#include <stdio.h>
char *id[5] = {0};
sprintf(remoter_id,"%04d",123);
sprintf(remoter_id,"%d",1234);
超时跳出
uint32_t time_out = 3000000;
while(!isEPD_W21_BUSY && time_out--){}
Image2Lcd软件图像生成图码转换
void showBitMap(uint8_t *back_image)
{
int i = 0,j = 0,k = 0;
const uint16_t send_fifo_num = 1024;
uint8_t *send_data = NULL;
send_data = os_mem_zalloc(RAM_TYPE_DATA_ON, send_fifo_num);
memset(send_data,0xff,send_fifo_num);
LCD_TFT_CS_0;
hw_tft_set_region(0,0,128-1,128-1);
for(i = 0;i < 2048;i++)
{
for(j = 0; j < 8; j++)
{
if((back_image[i] << j) & 0x80)
{
send_data[k] = 0x00;
send_data[k + 1] = 0x00;
}
else
{
send_data[k] = 0xff;
send_data[k + 1] = 0xff;
}
k += 2;
if(k >= send_fifo_num)
{
hw_spi_send_data(send_data,send_fifo_num);
memset(send_data,0xff,send_fifo_num);
k = 0;
}
}
}
os_mem_free(send_data);
LCD_TFT_CS_1;
}
void showBitMap(uint8_t *back_image)
{
int i = 0,j = 0,k = 0,m = 0;
const uint16_t send_fifo_num = 1024;
uint8_t *send_data = NULL;
send_data = os_mem_zalloc(RAM_TYPE_DATA_ON, send_fifo_num);
memset(send_data,0xff,send_fifo_num);
LCD_OLED_CS_0;
hw_oled_set_region(0,0,128-1,64-1);
for(i = 0; i < 128; i+=2)
{
for(j = 0;j < 16; j++)
{
for(k = 0; k < 8; k++)
{
if(((back_image[i * 16 + j]) << k) & 0x80)
{
send_data[m] = 0x00;
}
else
{
send_data[m] = 0xff;
}
if(((back_image[(i + 1) * 16 + j]) << k) & 0x80)
{
send_data[m] &= 0xf0;
}
else
{
send_data[m] |= 0x0f;
}
m++;
if(m >= send_fifo_num)
{
hw_spi_send_data(send_data,send_fifo_num);
memset(send_data,0xff,send_fifo_num);
m = 0;
}
}
}
}
os_mem_free(send_data);
LCD_OLED_CS_1;
}