一直以来都是使用MDK的RTE环境创建F1/F4的工程,最近打算开始研究threadX,使用cubeMX可能是最简便的办法
由于最近正好在测试USB,所以现在学习一下使用cubeMX创建USBX工程,记录一下主要步骤
1.准备工作
1.1安装cubeMX
从官网下载并安装STM32CubeMX
1.2安装软件包
1. 打开包管理器(6.11.1会要求登录账号,需要先注册,老版本不需要)
2. 在STM32CubeMX的包管理器中安装STM32H7芯片包,或者其它对应芯片的软件包
3. 在STM32CubeMX的包管理器中安装X-CUBE-AZRTOS-H7,或者其它对应芯片的软件包
2.新建cubeMX工程
1. 省略了选择芯片步骤,按照使用的芯片自行新建工程。若需要demo作参考,可以选择ACCESS TO EXAMPLE SELETOR,在界面中筛选需要的芯片系列,筛选组件
2. 通过芯片新建好工程后,添加ThreadX组件和USBX组件
3. 将HAL库的时钟换成systick之外的时钟源,不换的话软件要处理HAL时间基准(参考安富莱例程)
4. 设置USB外设(选择实际使用的外设,此处使用的FS),主要更改是打开全局中断
5. 设置ThreadX和USBX(这个不理解可以参考cube提供的例程,参数可以照搬)
6. USB时钟需要设置为48M
7. 设置一个串口,使用发送DMA(参考cube提供的例程)
8. 设置其余外设和时钟等环境
9. 工程设置,只拷贝需要的库,外设生成独立的c文件,串口、USB外设上电不初始化
3.MDK修改源码
主要修改app_usbx_device.c和ux_device_cdc_acm.c两个文件,这两个文件可以直接从cube提供的例程中复制过来(通过文件比较工具也可)
1. app_usbx_device.c
此文件主要是创建USB相关任务和初始化USB、串口硬件。
USBX_APP_Device_Init函数要注意:
FIFO需要对USB硬件外设有一定的理解,否则先直接照抄例程,注意需要和2.5中cubeMX中的设置关联
例程可能是USB_OTG_HS,需要根据实际外设更改
USB的句柄需要写实际的
[C] 纯文本查看 复制代码 /**
* @brief USBX_APP_Device_Init
* Initialization of USB device.
* @param none
* @retval none
*/
VOID USBX_APP_Device_Init(VOID)
{
/* USER CODE BEGIN USB_Device_Init_PreTreatment_0 */
/* USER CODE END USB_Device_Init_PreTreatment_0 */
/* USB_OTG_HS init function */
MX_USB_OTG_FS_PCD_Init(); //在这初始化的USB硬件
/* USER CODE BEGIN USB_Device_Init_PreTreatment_1 */
/* Set Rx FIFO */
HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x200); //这几个FIFO需要和cubeMX中的设置关联
/* Set Tx FIFO 0 */
HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x10);//具体如何设置FIFO,需要阅读STM32手册
/* Set Tx FIFO 2 */
HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x10);
/* Set Tx FIFO 3 */
HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 2, 0x20);
/* USER CODE END USB_Device_Init_PreTreatment_1 */
/* Initialize and link controller HAL driver */
ux_dcd_stm32_initialize((ULONG)USB_OTG_FS, (ULONG)&hpcd_USB_OTG_FS);//这个USB_OTG_FS要和硬件一致
/* Start the USB device */
HAL_PCD_Start(&hpcd_USB_OTG_FS);
/* USER CODE BEGIN USB_Device_Init_PostTreatment */
/* USER CODE END USB_Device_Init_PostTreatment */
}
2. ux_device_cdc_acm.c
此文件主要是CDC相关的接口和接收发送两个任务,可以直接从demo例程中复制过来
4.下载验证
下载前需要设置好下载器,下载后打开控制面板即可看到串口设备
5.测试代码:
cubeMX-USBX.zip
(4.78 MB, 下载次数: 89)
|