stm32 cubemx(5.3+lib1.8.0)+串口+freeRTOS+USBhost+fatfs

坑1:1.8固件
对于HAL HCD驱动程序,在usbh_conf.c用户文件中添加以下USB回调,以符合USB主机(HAL / Stack)上的最新更改
HAL_HCD_PortEnabled_Callback()
HAL_HCD_PortDisabled_Callback()

void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd)
{
USBH_LL_PortEnabled(hhcd->pData);//此函数在usbh_core.c中

}
1.8坑1

未配置均为默认
1.时钟源 ,外部25MHz使用外部晶振
2.sw debug TIM1作为时钟源 systick被freeRTOS使用sw debug 和时基
3.UART2串口
4.usb_otg_fs usb主机 host only
sof:一般音视频传输使用
vbus:usb作为从机使用
hub-otg fst
5.u盘设备
code_page:支持简体中文 GBK
use_lfn:放在stack区
lfn_unicode:编码格式fatfs
6.freeRTOS
TOTAL_HEAP_SIZE:freeRTOS配置RAM 太小会导致程序崩溃freertos
创建任务和队列 ,默认就有的StartDefaultTask任务不可以删除但是可以修改创建任务
7.USBhsot
USBH_DUG_LEVEL:打印bebug信息usb-host
usb从设备电源供应脚
需手动设置为输出usb host power引脚
usb从设备电源脚
8.时钟
只需填写HSE和HCLK
enable css:时钟安全在这里插入图片描述
在这里插入图片描述
在这里插入图片描述 代码参考hal库里的例程

DSP和标准外设库: 资源编号 : STSW-STM32065 资源名称 : STM32F4 DSP and standard peripherals library 文件名 : stm32_f105-07_f2_f4_usb-host-device_lib.zip 下载地址 : http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257901# USB库: 资源编号 : STSW-STM32046 资源名称 : STM32F105/7, STM32F2 and STM32F4 USB on-the-go Host and device library (UM1021) 文件名 : stm32_f105-07_f2_f4_usb-host-device_lib.zip 下载地址 : http://www.st.com/web/en/catalog/tools/PF257882 ETH以太网库: 资源编号 : STSW-STM32046 资源名称 : LwIP TCP/IP stack demonstration for STM32F4x7 microcontrollers (AN3966) 文件名 : stsw-stm32070.zip 下载地址 : http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257906 【CMSIS】 Cortex微控制器软件接口程序(Cortex Microcontroller Software Interface Standard (CMSIS). ) 版本: V4.2 发布日期: 31. July 2014 【STM32F4xx_StdPeriph_Driver】 STM32F40x系列CPU标准外设驱动程序 版本: V1.5.0 发布日期: 06-March-2015STM32_USB_OTG_Driver】 STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library 版本: V2.1.0 发布日期: 2012-03-19 【STM32_USB_Device_Library】 STM32F105/7xx, STM32F2xx and STM32F4xx USB Device Library 版本: V1.1.0 发布日期: 2012-03-05STM32_USB_HOST_Library】 STM32F105/7xx, STM32F2xx and STM32F4xx USB Host Library 版本: V2.1.0 发布日期: 2012-03-19 【STM32F4x7_ETH_Driver】 STM32F4x7 Eth Library 版本: V1.1.0 发布日期: 31-July-2013 ********************************************************************************************************* * * 版 本 : V1.0 * 说 明 : 本实验主要实现FreeRTOS+STemWin+FatFS+USB Host综合 * 实验目的: * 1. 学习FreeRTOS+STemWin+FatFS+USB Host综合 * 2. 这里的USB Host主要实现U盘相关处理,支持U盘热插拔。 * 用户可以根据需要在usb_usr.c文件中的插入检测函数: * USBH_USR_Configuration_DescAvailable或者函数USBH_USR_Init函数加入插入标志 * 拔出检测函数: * USBH_USR_DeviceDisconnected * 实验内容: * 1. 按下按键K1可以通过串口打印任务执行情况(波特率115200,数据位8,奇偶校验位无,停止位1) * ================================================= * 任务名 任务状态 优先级 剩余栈 任务序号 * vTaskUserIF R 2 272 2 * vTaskGUI R 1 657 1 * IDLE R 0 113 6 * vTaskMsgPro B 4 1957 4 * vTaskLED B 3 483 3 * vTaskStart B 5 489 5 * * * 任务名 运行计数 使用率 * vTaskUserIF 5583 1% * vTaskGUI 10782 2% * IDLE 355589 91% * vTaskLED 0 <1% * vTaskMsgPro 16770 4% * vTaskStart 17 <1% * 串口软件建议使用SecureCRT(V6光盘里面有此软件)查看打印信息。 * 各个任务实现的功能如下: * vTaskGUI 任务: emWin任务 * vTaskTaskUserIF 任务: 接口消息处理 * vTaskLED 任务: LED闪烁 * vTaskMsgPro 任务: U盘中文件处理和浏览 * vTaskStart 任务: 启动任务,也就是最高优先级任务,这里实现按键扫描和触摸检测 * 2. 任务运行状态的定义如下,跟上面串口打印字母B, R, D, S对应: * #define tskBLOCKED_CHAR ( &#39;B&#39; ) 阻塞 * #define tskREADY_CHAR ( &#39;R&#39; ) 就绪 * #define tskDELETED_CHAR ( &#39;D&#39; ) 删除 * #define tskSUSPENDED_CHAR ( &#39;S&#39; ) 挂起 * 3. 本实验的USB Host主要是对U盘的操作,通过电脑端的串口软件SecureCRT软件, * 给板子发送相关命令实现操作,具体实现在demo_fatfs文件里面。 * printf("请选择操作命令:\r\n"); * printf("1 - 显示根目录下的文件列表\r\n"); * printf("2 - 创建一个新文件armfly.txt\r\n"); * printf("3 - 读armfly.txt文件的内容\r\n"); * printf("4 - 创建目录\r\n"); * printf("5 - 删除文件和目录\r\n"); * printf("6 - 读写文件速度测试\r\n"); * printf("7 - 挂载U盘\r\n"); * printf("8 - 卸载U盘\r\n"); * 注意事项: * 1. 本实验推荐使用串口软件SecureCRT,要不串口打印效果不整齐。此软件在 * V5开发板光盘里面有。 * 2. 务必将编辑器的缩进参数和TAB设置为4来阅读本文件,要不代码显示不整齐。 * * 修改记录 : * 版本号 日期 作者 说明 * V1.0 2016-03-15 Eric2013 1. ST固件库到V1.5.0版本 * 2. BSP驱动包V1.2 * 3. FreeRTOS版本V8.2.3 * 4. STemWin版本V5.28 * 5. FatFS版本V0.11a * * Copyright (C), 2016-2020, 安富莱电子 www.armfly.com * *********************************************************************************************************
### 使用 STM32CubeMX 配置 LED 灯组 #### 工具与环境准备 开发环境中使用的MCU型号为STM32F103C8T6,在IDE环境下使用MDK 5.27进行编程,代码生成工具选用的是STM32CubeMx 5.6.1以及HAL库版本为STM32Cube_FW_F1_V1.8.0[^1]。 #### 创建新项目并配置LED引脚 启动STM32CubeMX软件后创建一个新的工程文件。选择目标微控制器(即STM32F103C8T6),点击“Start Project”。进入Pinout & Configuration界面之后,通过左侧栏目的“Connectivity”部分找到GPIO选项来设置用于控制LED的端口模式。通常情况下,会将LED连接到板载的某个通用I/O引脚上作为输出用途。对于每个要驱动的LED,都需要单独指定其对应的物理引脚,并将其工作方式设为推挽输出(Push-Pull Output)。 #### 初始化外设及生成初始化代码 完成上述基本硬件资源分配后,切换至“Configuration”标签页下的System Core模块中的NVIC子项里开启必要的中断源(如果有的话),不过针对简单的LED闪烁实验来说一般不需要额外使能任何IRQ通道。接着转回主窗口顶部菜单条上的“Project”,选取“Generate Code”命令让STM32CubeMX自动生成相应的底层驱动程序框架结构及其配套函数声明定义等内容。此时可以选择保存整个解决方案以便后续修改调整之需。 #### 编写应用程序逻辑实现LED功能 打开由STM32CubeMX导出后的Keil uVision工程项目,在`main.c`文件内添加如下所示的核心业务处理流程: ```c /* USER CODE BEGIN Includes */ #include "stm32f1xx_hal.h" /* USER CODE END Includes */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); // Ensure this matches your configuration in CubeMX while (1) { /* Toggle LED connected to GPIO pin every second */ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // Assuming PA5 is used as an example here. HAL_Delay(1000); /* USER CODE BEGIN WHILE */ /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } } ``` 这段代码实现了每秒钟翻转一次PA5引脚电平状态的效果,从而达到点亮/熄灭接在此处外部电路里的发光二极管的目的。当然实际应用当中可能还需要考虑诸如限流电阻匹配等问题以确保安全可靠运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值