目录
- 以下是配置步骤
- 1. 选择MCU
- 2. 确认时钟源,选用外部晶振作为HSE的时钟源;接线方式选择SW;配置时钟为72M
- 3. 配置IO口(LED)
- 4. 配置uart(PA9,PA10),方便打印输出,波特率115200,异步触发模式,
- 5. 打开usart1的串口中断
- 6. 配置抢占优先级和子优先级,数字越小,优先级越高
- 7. 起名字,选择编译链,定义堆栈大小
- 8. 生成代码前,每一个外设单独创建.c和.h文件;在重复生成时备份之前的代码;在重复生成时保留用户代码。总之一些安全措施
- 9. 配置使用的库是HAL库还是LL库
- 10. 生成代码
- 11. 使用KEIL5打开项目
- 12. 配置Target Option,这里根据自己的来
- 13. 编译下载验证,并在main.c中添加自己的用户程序
- 14. 重定向fputc和fgetc之后,printf无法使用,一定要把下面的MicroLIB选项勾上
- 15. 重定向函数如下
- 16. 接下来就是闪灯和串口输出了![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e0ff175134e35fe9865d9cd85f5e8c29.png)
- 17. 重定向函数代码在下面
- 18. 有些人会这样写重定向函数,注意17是基于HAL库,下面这个是基于固件库,HAL库已经处理好了发送标志位的检查。
以下是配置步骤
1. 选择MCU
2. 确认时钟源,选用外部晶振作为HSE的时钟源;接线方式选择SW;配置时钟为72M
3. 配置IO口(LED)
4. 配置uart(PA9,PA10),方便打印输出,波特率115200,异步触发模式,
5. 打开usart1的串口中断
6. 配置抢占优先级和子优先级,数字越小,优先级越高
7. 起名字,选择编译链,定义堆栈大小
8. 生成代码前,每一个外设单独创建.c和.h文件;在重复生成时备份之前的代码;在重复生成时保留用户代码。总之一些安全措施
9. 配置使用的库是HAL库还是LL库
10. 生成代码
11. 使用KEIL5打开项目
12. 配置Target Option,这里根据自己的来
13. 编译下载验证,并在main.c中添加自己的用户程序
14. 重定向fputc和fgetc之后,printf无法使用,一定要把下面的MicroLIB选项勾上
15. 重定向函数如下
16. 接下来就是闪灯和串口输出了
17. 重定向函数代码在下面
/* redirect fputc, then can use printf() */
int fputc(int ch, FILE *f)
{
/* send one char to huart1 */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
return (ch);
}
/* redirect fgetc, then can use scanf() / getchar() */
int fgetc(FILE *f)
{
int ch;
HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 1000);
return (ch);
}