M0工程建立主要分如下四步:
1、IO端口配置
2、时钟配置
3、外设配置
4、printf函数重定向
IO配置:
1、看懂原理图
2、建立IO功能映射表
3、通过STM32Cubemx配置IO工作模式
STM32F051K8U6 IO功能映射表 | |||
序号 | IO编号 | IO信号网络 | 功能描述 |
0 | VSS | GND | 电源负 |
1 | VDD | 3.3V | 电源正 |
2 | PF0-OSC-IN | OSC_IN | 外部8M晶振 |
3 | PF1-OSC-OUT | OSC_OUT | |
4 | NRST | NRST | 外部复位 |
5 | VDDA | 3.3V | 电源正 |
6 | PA0 | BAT_ADC | 模拟量输入-电池电压 |
7 | PA1 | ADC_KEY | 模拟量输入-按键信息 |
8 | PA2 | DIO3 | 数字量输入-LoRa数字IO3 |
9 | PA3 | DIO2 | 数字量输入-LoRa数字IO2 |
10 | PA4 | A1 | 模拟量输入-传感器扩展接口1 |
11 | PA5 | ID_1 | NC |
12 | PA6 | A2 | 模拟量输入-传感器扩展接口2 |
13 | PA7 | NSS_LoRa | LoRa模块片选接口 |
14 | PB0 | LED4 | 数字输出-无线通信网络指示灯 |
15 | PB1 | LED3 | 数字输出-无线通信发送指示灯 |
16 | PB2 | LED2 | 数字输出-无线通信接收指示灯 |
17 | VDD | 3.3V | 电源正 |
18 | PA8 | D3&KEY | 数字量输入3-按键状态 |
19 | PA9 | U1 USART1_TX | 串行通信接口 |
20 | PA10 | U1 USART1_RX | |
21 | PA11 | DIO0 | 数字量输入-LoRa数字IO0 |
22 | PA12 | DIO1 | 数字量输入-LoRa数字IO1 |
23 | PA13 | SWDIO | SWD调试烧写接口 |
24 | PA14 | SWCLK | |
25 | PA15 | NSS_LCD | LCD片选接口 |
26 | PB3 | SCLK | SPI时钟接口 |
27 | PB4 | MISO | SPI主机输入从机输出接口 |
28 | PB5 | MOSI | SPI主机输出从机输入接口 |
29 | PB6 | LCD | LCD背光控制接口 |
30 | PB7 | DI | 数字量输入-传感器扩展接口1 |
31 | BOOT0 | GND | 电源负 |
32 | PB8 | D2 | 数字量输入-传感器扩展接口1 |
时钟配置:
1、选择时钟源
2、配置倍频
3、使能锁相环配置系统主时钟为48M
外设配置:
USART1配置:
1、 选择异步通信,无硬件流控
2、设置波特率115200
3、设置DMA接收
SPI1配置:
1、选择全双工主机模式,硬件片选不使能
2、设置波特率为1.5MBit/s,时钟极性为低电平驱动,时钟相位为第一个边沿
Printf函数重定向:
int fputc(int ch,FILE *f)
{
while((USART1->ISR&0X40) == 0);
USART1->TDR = (uint8_t)ch;
return ch;
}
串口打印测试:
测试结果: