//以下函数输出结果相同
char a[16] = "abcdefg"
printf("%s", a);
printf(a);
puts(a);
STM32带参数宏定义#define 下面两段效果相同
#define Buzzer(x) GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(x))
#define Buzzer(x) do{x?\
GPIO_WriteBit(GPIOA, GPIO_Pin_7, Bit_RESET):\
GPIO_WriteBit(GPIOA, GPIO_Pin_7, Bit_SET);\
}while(0)
strcmp:把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
如果str1 = str2,则返回0
int strcmp(const char *str1, const char *str2)
delay_us函数:HAL库中无us延时函数,需自定义us延时
void delay_us(uint16_t cnt)
{
uint8_t i;
while(cnt)
{
for (i = 0; i < 10; i++)
{
}
cnt--;
}
}
sprintf函数:发送格式化输出到 str 所指向的字符串
sprintf函数在完成其他数据类型转换成字符串类型的操作中应用广泛
int sprintf( char *buffer, const char *format [, argument,…] );
用法 sprintf函数打印到字符串中
char Speed_Str[24];
int Speed_Cnt = 0;
sprintf(Speed_Str, "speed = %d m/s", Speed_Cnt);
Oled_Show_Str(1, 2, Speed_Str);
memset函数:清空字符串数据
void *memset(void *str, int c, size_t n)
形参1:数组地址
形参2:设置为0
形参3:数组大小 strlen(ch)
fputc函数:把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
int fputc(int char, FILE *stream)
例如,STM32重写 int fputc(int ch, FILE *f)
重定向是指将fputc里面的输出指向目标设备。因printf函数调用了fputc,而fputc输出有默认指向的目标,且不同库中的fputc输出指向不同,所以需要重写fputc
若需要printf输出到串口,则需要将fputc里面的输出指向串口,这一过程称为重定向
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
当需要使用scanf()函数的时候,重定向fgetc()函数
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}