配置SYS和时钟
使用外部时钟
使用外部时钟,总线时钟为最大
配置串口
串口不同模式
mode | |
---|---|
Asynchronous | 异步通讯 |
Synchronous | 同步通讯 |
Single Wire(Half-Duple) | 半双工模式 |
MultiprocessorCommunication | 多处理器通讯 |
IrDA | 红外通讯 |
LIN | 局域互联网 |
SmartCard | 智能卡模式 |
这里选择异步通信
填写串口信息
打开串口中断
确认串口GPIO
生成工程
Use MicroLIB”这是KEIL自带的一个简易的库
使用printf函数,直接默认定向到串口1
重写串口函数
#include "stdio.h"
/* 重定义C库函数到串口,printf */
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
return (ch);
}
int fgetc(FILE *f)
{
int ch;
HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 1000);
return ch;
}
void usart1_sendString(uint8_t * str)
{
unsigned int sendIndex = 0;
do{
HAL_UART_Transmit(&huart1, (uint8_t *)(str + sendIndex), 1, 1000);
sendIndex++;
}while(*(str + sendIndex) != '\0');
}
主函数测试
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
while (1)
{
printf("Hello word STM32 \r\n");
HAL_Delay(1000);
int num = 0,index = 0;
scanf("%d",&num);
for(index = 0;index<num;index++){
HAL_Delay(500);
printf("index:%d\r\n",index);
HAL_Delay(500);
}
}
}
测试案例https://download.csdn.net/download/hmxm6/88968220https://download.csdn.net/download/hmxm6/88968220