新手初探NUCLEO STM32F767ZIT6单片机使用,记录问题及解决方法,期待技术分享和经验交流,根据项目使用持续更新。
USART通信初探
一、NUCLEO-STM32F767ZIT6官方资料下载
板载资源: MBED.HTM
包括控制器系统架构、引脚说明、技术参考文档、示例程序等
二、STM32CubeMX安装及使用
2.1 STM32CubeMX下载
提前注册ST账号
官网下载: STM32CubeMX
选择与开发环境对应的版本
2.2 STM32CubeMX安装
下载完成后双击即可安装,自行选择合适的安装路径,其余按照默认设置即可,暂无需要特别注意的地方。
2.3 安装Java jdk环境
STM32CubeMX基于Java实现的,需安装Java jdk环境
下载完成后双击即可安装,自行选择合适的安装路径,其余按照默认设置即可,暂无需要特别注意的地方。
三、基于NUCLEO-STM32F767ZIT6的串口通信
3.1 目标
基于NUCLEO-STM32F767ZIT6实现电机的位置跟踪控制
硬件连接框图
***Nucleo F767ZI用户指南中文资料参考***
STM32CubeMX Nucleo F767ZI 教程(2)
3.2 STM32CubeMX配置
-
新建工程
-
选择开发板
-
设置Debug模式
下载方式是SWD方式,选择Serial Wire
-
设置时钟
BYPASS Clock Source:内部时钟源
Crystal/Ceramic Resonator:外部时钟源
***板载ST-LINK V2.1,输入时钟由ST-LINK的MCO提供。修改时钟配置,使主频达到最高。
-
USART1设置
默认引脚:
PB14:Tx PB15:Rx
由于LD3与PB14连接,故实际配置为:
PB6:Tx PB15:Rx
按需配置串口参数
-
USART2/3配置
使用默认引脚
USART2:
PB2:Tx PB3:Rx
USART3:
PB10:Tx PB11:Rx
按需配置串口参数
-
GPIO按需配置
PB1,PB2用于电机的RS485通信。
PB0,PB7,PB14为LD1/2/3。
-
NVIC中断配置
优先级可在后期配置
-
项目配置
四、串口通信随笔
4.1 串口中断
********************************串口中断流程**********************************
***在main文件中重新定义HAL_UART_RxCpltcallback函数,对接收的数据进行处理
4.2 NVIC中断优先级
NVIC中断优先级包括抢占优先级和子优先级。
规则简介:
1、高优先级的抢占优先级可以打断正在进行的低抢占优先级中断;
2、抢占优先级相同的中断,高响应优先级优先执行,但不可以打断低响应优先级的中断;
3、抢占优先级和响应优先级相同的中断,先发生先执行。
五、其他问题
5.1 Undefined symbol …(referred from…)
基于正点原子例程进行开发时遇到此问题,使用STM32CubeMX进行配置不存在该问题
描述:
原因:
1、没有将包含该函数的头文件包含进来;
2、没有头文件里面声明该函数;
3、没有将该函数的.C文件加入工程里面;
4、已添加头文件,仍然报错是因为没有在配置文件中使能相关外设,打开stm32f4xx_hal_conf.h,找到相关外设宏定义,取消注释。
总结
待补充