目录
1. KEIL
1.1 复位函数
__set_FAULTMASK(1);
NVIC_SystemReset();
2. STM32CubeIDE
2.1 使用printf函数
加在某个地方, usart.c 或者 main.c中
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
GETCHAR_PROTOTYPE
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, 0xFFFF);
if (ch == '\r')
{
__io_putchar('\r');
ch = '\n';
}
return __io_putchar(ch);
}
头文件引用:
#include <stdio.h>
IDE配置:
- 右键当前工程:
2. 使用scanf库文件
2.2 编译输出Hex和Bin文件
工具栏 - project - properties
按照步骤设置:
设置完成后,Apply and Close,编译后,在Debug文件夹中可以看到输出的文件。
2.3 相同代码高亮显示
如下开关打开(按下)则高亮显示相同的代码,关闭则只显示当前选中的部分。
2.4 判断数据开头函数
if(starts_with((char *)usart1_rxsavebuf, “SWWW,”)) //*判断开头
/*字符串处理函数 char数组或者uint8_t数组*/
uint8_t starts_with(const char *src, const char *key)
{
while (*key)
if (*key++ != *src++)
return 0;
return 1;
}
2.5 数据截取及转换函数
SW,12,23,45,87,88,\r\n
if(starts_with((char *)usart5_rxsavebuf, "SW,")) //*判断开头
{
strtok((char *)usart5_rxsavebuf, ","); //接收到的第一个“,”之前的数据 -- SW
p_pedalSmall_roll = strtok(NULL, ","); //12
p_pedalSmall_pitch = strtok(NULL, ","); //23
d_pedalSmall_roll = strtod(p_pedalSmall_roll, &end); //将字符型数据 p_pedalSmall_roll 转换为双精度浮点型数据,下同
d_pedalSmall_pitch = strtod(p_pedalSmall_pitch, &end);
// printf("%s,\r\n", p_pedal1_); //打印接收到的踏板SMALL数值
// printf("%.1f,%.1f\r\n", d_pedalSmall_roll, d_pedalSmall_pitch); //打印接收到的踏板SMALL数值
/*clear*/
}