使用ST官方的NUCLEO-F429ZI开发板在进行FreeROTS创建任务和删除任务的时候,向串口发送消息的时候会出现乱码的情况,在网上找不到解决问题的方法,现在问题解决了,记录一下,方便大家参考。
网上这块板子的信息还是挺少的,所以下面给一下这块板子的一些信息获取链接,首先当然是ST官方的原理图和例程,地址其实板上已经写了 www.st.com/stm32nucleo
选择对应型号的板子:
进去可以看到帮助文档:
原理图和PCB图资源:
官方的例程可以在STM32CubeMX软件上下载,官网上也有,但是忘记在哪下的了,下面附上软件下载方式和百度网盘版的链接:链接:https://pan.baidu.com/s/1gAiS4Rpindj13J-IQ5M8Ow 提取码:kkkk
在选择好芯片后生成代码可以直接自动下载官方例程。
这块板引脚看起来也不是很明确,附一下连接图,直接连接即可,其他跳线帽不需要动
接下来就是串口的连接,官方例程推荐使用USART3,所以只需要使用到PD8,PD9。连接位置为CN5的TX和RX,注意,板上已经将收发引脚掉转,不须再次交换(通过后面的学习发现这块板子本身集成了ST-LINK,可以直接查安卓线连接电脑,他的烧录程序和发送串口消息可以共用!!!!!!!!)
(向串口发送数据之前要先配置HSE为板上的晶振大小,F429这块板在用串口的时候是使用外部芯片晶振,为8M,所以需要全文搜索HSE,修改为8000000,串口引脚和端口的配置代码下面的百度网盘链接已经附上全部的代码)对于用按键触发删除任务一操作,这里也卡了很久,请教了师兄才解决问题,首先ST的板子默认已经有了下拉,所以在配置按键引脚的时候不需要再配置上下拉,模式选择输入模式即可,在进行FreeROTS移植的时候,正点所写的判断按键是判断低电平,需要改成判断高电平有效,才能正常实现按键删除任务操作,总结还是这块板子好难用!!(片段代码和完整代码链接附上)
gpio_init_struct.Pin = KEY2_GPIO_PIN; /* KEY2引脚 */
gpio_init_struct.Mode = GPIO_MODE_INPUT; /* 输入 */
gpio_init_struct.Pull = GPIO_NOPULL; /* 不拉 */
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */
HAL_GPIO_Init(KEY2_GPIO_PORT, &gpio_init_struct); /* KEY2引脚模式设置,上拉输入 */
//按键扫描部分
uint8_t key_scan(uint8_t mode)
{
static uint8_t key_up = 1; /* 按键按松开标志 */
uint8_t keyval = 0;
if (mode) key_up = 1; /* 支持连按 */
if (key_up && ( KEY2 == 1 )) /* 按键松开标志为1, 且有任意一个按键按下了 */
{
delay_ms(10); /* 去抖动 */
key_up = 0;//增加这个防止多次按键报错
if (KEY2 == 1) keyval = KEY2_PRES;
}
return keyval; /* 返回键值 */
}
完整代码(再加上F429这款板官方原理图):链接:https://pan.baidu.com/s/1AEanuPmb9xk-WgXQzff2og
提取码:kkkk