HAL库
回帖(1)
2021-12-8 13:48:15
1. cubeMX配置
CubeMX配置生成代码参考 :https://blog.csdn.net/as480133937/article/details/99073783
cubeMX配置过程的注意事项请参考:https://liu-endong.blog.csdn.net/article/details/113585500
2. 中断
HAL的串口中断不像库函数配置需要自己引用中断向量,他是直接使用启动文件的向量表里面的中断表。
然后在中断文件里面实现中断函数,cubeMX生成的非系统中断函数一般都在最后面添加
找到接收、发送中断,接收中断在中断函数最后几行
3. 重定义fputc
在hal.c中定义
#include extern UART_HandleTypeDef huart1; //声明串口 重定义pfutc
int fputc(int ch, FILE *f){ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch;} int fgetc(FILE *f){ uint8_t ch = 0; HAL_UART_Receive(&huart1, &ch, 1, 0xffff); return ch;} 4. main.c中调用
添加数据缓冲
#define RXBUFFERSIZE 256char RxBuffer[RXBUFFERSIZE]; 调用fputc
printf("666led666n"); HAL_Delay(1000);
5. 总结
以上代码是连续发送,不能一次发送一行,而是1s发送一次,
1. cubeMX配置
CubeMX配置生成代码参考 :https://blog.csdn.net/as480133937/article/details/99073783
cubeMX配置过程的注意事项请参考:https://liu-endong.blog.csdn.net/article/details/113585500
2. 中断
HAL的串口中断不像库函数配置需要自己引用中断向量,他是直接使用启动文件的向量表里面的中断表。
然后在中断文件里面实现中断函数,cubeMX生成的非系统中断函数一般都在最后面添加
找到接收、发送中断,接收中断在中断函数最后几行
3. 重定义fputc
在hal.c中定义
#include extern UART_HandleTypeDef huart1; //声明串口 重定义pfutc
int fputc(int ch, FILE *f){ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch;} int fgetc(FILE *f){ uint8_t ch = 0; HAL_UART_Receive(&huart1, &ch, 1, 0xffff); return ch;} 4. main.c中调用
添加数据缓冲
#define RXBUFFERSIZE 256char RxBuffer[RXBUFFERSIZE]; 调用fputc
printf("666led666n"); HAL_Delay(1000);
5. 总结
以上代码是连续发送,不能一次发送一行,而是1s发送一次,
举报
更多回帖