【NUCLEO-L4R5ZI评测】点灯&使用板载串口发送
本帖最后由 donatello1996 于 2018-1-14 21:29 编辑俗话说万物皆从点灯开始,这次帖子就操作GPIO和STLINK串口。
由于L4+系列需要用到CubeL4 1.10最新版本的固件库,之前的1.7-1.9版本固件库都没法使用,所以要去官方更新最新版本,这里顺便给出下载链接:
固件下载地址
然后,将STLINK的USB接口插上电脑,装好驱动之后可以被电脑识别为STLINK仿真接口+虚拟串口:
在官网下载电路图,这里直接给出:
打开L4+板子的电路图,得知STLINK串口与板子的LPUART1串口相连,引脚为PG7和PG8,需要注意的是,在CubeMX中,LPUART1默认引脚为PC0和PC1,我们需要手动将引脚改回来:
板载红色LED灯LD3与PG14相连,在CubeMX中启用即可GPIO_Output模式即可:
LD1本期帖子不理会:
到了主频设置界面,直接将系统主频设置为官方默认主频120MHz,输出120回车后,CubeMX会提示该主频与时钟源不匹配,只需直接回车跟随软件设置即可:
来到外设设置界面,打开LPUART1设置窗口,将波特率设置为115200,数据位设置为8位:
打开工程设置界面,设置固件库为HAL库(本期帖子讲解HAL库,以后讲解LL库):
设置固件库存放地址,也就是上面提到的要下载的固件:
设置好之后生成工程文件夹:
打开工程配置界面,勾选MicroLIB复选框,以支持printf函数输出:
工程烧录设置中有一点需要注意,选择FLASH的型号必须为STM32L4Rx 2MB Flash Dual,不能选错,否则会提示一连串的Contents mismatch at: 08001001H错误:
工程配置完毕之后就可以写代码了,来看看LPUART1串口初始化代码:
void LPUART1_Init(int baud)
{
HAL_PWREx_EnableVddIO2();
__HAL_RCC_GPIOG_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
__HAL_RCC_LPUART1_CLK_ENABLE();
LPUART1_Handler.Instance = LPUART1;
LPUART1_Handler.Init.BaudRate =baud;
LPUART1_Handler.Init.WordLength = UART_WORDLENGTH_8B;
LPUART1_Handler.Init.StopBits = UART_STOPBITS_1;
LPUART1_Handler.Init.Parity = UART_PARITY_NONE;
LPUART1_Handler.Init.Mode = UART_MODE_TX_RX;
LPUART1_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
LPUART1_Handler.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
LPUART1_Handler.Init.ClockPrescaler = UART_PRESCALER_DIV1;
LPUART1_Handler.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
LPUART1_Handler.FifoMode = UART_FIFOMODE_DISABLE;
HAL_UART_Init(&LPUART1_Handler);
HAL_UARTEx_SetTxFifoThreshold(&LPUART1_Handler, UART_TXFIFO_THRESHOLD_1_8);
HAL_UARTEx_SetRxFifoThreshold(&LPUART1_Handler, UART_RXFIFO_THRESHOLD_1_8);
}
延时函数代码:
void Delay_us(int n)
{
while(n--);
}
void Delay_ms(int n)
{
while(n--)
Delay_us(1000);
}
main函数代码:
int main()
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
LPUART1_Init(115200);
printf("\nEEWORLD论坛 stm32/stm8专区\n");
printf("【NUCLEO-L4R5ZI评测】点灯&使用板载串口发送\n");
printf("donatello1996\n");
while (1)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_14);
Delay_ms(100);
}
}
闪灯效果:
上传工程文件:
页:
[1]