1)首先在drv_usbd.c中实现了USB的中断处理函数USBD_IRQ_HANDLER(OTG_FS_IRQHandler的重定义),里面调用了ST的HAL_PCD_IRQHandler 2)PCD_IRQHandler处理的类型的中断然后调用不同的针对性的函数源。这些函数部分在32f4xxhal_d.中定义线程均__WEAK协议,具体为接口实现内容,需要具体实现。这部分也闯了drv_usbd.c...
1)首先在drv_u***d.c中实现了USB的中断处理函数USBD_IRQ_HANDLER(OTG_FS_IRQHandler的重定义),...
RT-Thread RDC2022 纪念板是一款基于全志 RISC-V 芯片 D1s 的小尺寸开发板。D1s 采用 RISC-V 64bit 架构的平头哥 C906 处理器,主频 720MHz,22nm工艺。内置 64M DDR2 RAM,同时集成了大量音视频相编解码功能,可…
2.选择RCC项为外部高速时钟为晶振;选择USB项打开使能,选择USB的IP包;设置时钟频率,主时钟设置为73Mhz,USB时钟设置为48Mhz,cubeMX自动计算分频系数。 3.设置工程选项,生成工程代码。 (三)RT-thread工程修改 1.时钟配置修改 从CubeMX工程的main.c文件中拷贝SystemClock_Config函数的内容覆盖RT-Thred studio工程drv_cl...
4、想到新的 STM32 BSP 所有的 BSP 都是用的同一份驱动,这样就可以根据有没有做好的 USB 驱动来判断有没有 BSP 支持 USB 功能了。打开rt-thread\bsp\stm32\libraries\HAL_Drivers目录。如下所示,可以看到里面果然有 usb 的驱动文件,叫做drv_usbd_fs.c。
定义了 BSP_USING_USBDEVICE 宏之后,drv_usbd.c 文件就会参与编译,该文件只是配置了 USB Device 的工作方式和传输函数等,具体 USB Device 引脚和时钟的初始化需要借助 STM32CubeMx 生成的代码。 将STM32CubeMx 工具生成的 USB Device 引脚和时钟初始化代码(一般在 stm32_xxxx_hal_msp.c 文件中)复制到自己...
rt-thread/components/dfs/filesystems/romfs\dfs_romfs.h文件中,声明变量romfs_root为非static, 前后声明不一致,导致报错,解决方法很简单, 将drv_filesystem.c中的static去掉即可 。 修改后,再次重新编译,就可以编译通过了: 3.2 下载程序 编译成功后,我们需要将生成的二进制程序代码文件烧录到开发板上。
双击RT-Thread Settings 使能CAN设备驱动程序,如下图所. 注意:使能CAN硬件过滤器可以不勾选,不勾选即接受所有数据。 打开stm32f1xx_hal_conf.h 取消 #define HAL_CAN_MODULE_ENABLED 的注释,如下图所示。 3.添加CAN驱动程序 添加drv_can.c和drv_can.h到工程的drives目录下,添加完成后如下图所示。
RT-Thread版本:4.1.0 1.创建工程 根据所使用的硬件信息,配置以上信息,注意红色框中的建议内容:工程用的是内部时钟,通常我们用的是外部时钟,需要修改drv_clk.c文件。 2.修改时钟配置函数 时钟的配置是在drivers/drv_clk.c文件中,函数system_clock_config()完成的,可以看到用的是内部时钟HSI。配置外部时钟可以由Cu...
RT-Thread 工程是使用宏来进行条件编译的,改进下代码,对这些 IO 设置相关的代码也加些宏,如下: staticvoidnu_pin_uart_init(void){#ifdefined(BSP_USING_UART0)/* UART0: GPF11, GPF12 */outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) &0xFFF00FFF) |0x00011000);#endif#ifdefined(BSP_USIN...