目录
一、实验准备
硬件:
- STM32F103C8T6
- USB转TTL串口
- 面包板及若干杜邦线
软件:
- STM32CubeMX
- KEIL
- FlyMcu
- fireTools
线路连接:
二、STM32CubeMX配置项目
1、配置RCC
2、配置SYS
3、配置GPIO
(1)设置引脚PA5,命名为LED,进行LED闪烁
(2)设置PA5为GPIO_Output
4、配置串口
5、配置定时器
(1)使用定时器2来实现串口通信和LED闪烁
(2)改变钟源为内部时钟,同时分频系数为71,系统自动加1为72,周期为9999能够自动重载
(3)时钟我们一般会配置为72MHZ,所以72分频后得到1MHZ的时钟。中断时间为1/(72M/72/10000)=0.01s.
6、配置中断
7、配置时钟
8、生成项目
三、KEIL配置代码
1、 printf函数
在main.c
和usart.c
中添加头文件#include "stdio.h"
之后,勾选Target
中的use MicroLIB
,在mian.c
文件中,添加如下代码,进行重定义
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
2、中断函数
(1)添加置while
循环前
HAL_TIM_Base_Start_IT(&htim2);
(2)添加回调函数置main.c
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static uint32_t time_cnt =0;
static uint32_t time_cnt2 =0;
if(htim->Instance == TIM2)
{
if(++time_cnt >= 200)
{
time_cnt =0;
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}
if(++time_cnt2 >=500 )
{
time_cnt2 =0;
printf("hello windows!\r\n");
}
}
}
3、 编译生成HEX文件
(1)选定生成HEX文件
(2)编译程序
四、FlyMcu烧录
五、效果展示
1、helloWindows通信
2、LED定时闪烁
六、实验参考
https://blog.csdn.net/jynyyhd/article/details/127587043?spm=1001.2014.3001.5502
http://www.mcublog.cn/stm32/2021_01/stm32cubemx-dingshiqi-led/