草庐IT

STM32CubeMX

全部标签

基于STM32实现USB复合设备CDC+MSC正确实现方式

摘要:前一段时间对无刷电机的驱动有了兴趣,移植了odrive和simpleFOC代码,里面有关于stm32实现USB复合的实例,最近也有打算在electronbot里实现U盘+通讯来实现bootloader和语音文件的拷贝和管理。看了网上也有相关实现文章,比较HAL原代码框架,无论是odrive里,还是网上其它实现案例,都是通过ep_addr进行switch,而原代码框架里有USBD_RegisterClassComposite函数,阅读HAL库USB相关代码后,决定以符合原代码框架的姿势打开USB组合设备CDC+MSC。目录摘要:编译环境 一、基本工程建立二、描述符修改1.设备层2.配置描述

解决!!!“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”启动失败(退出代码: 4294901760)。

解决!!!“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”启动失败(退出代码:4294901760)。当咱们打开VisualStudioCode里面的终端时会出现下面的提示:这是因为终端的窗口"terminal.integrated.shell.windows":"C:/WINDOWS/System32/cmd.exe"没有弄到设置里面去我们可以点击【文件】(file)下面的【首选项】(Preferences)里面的【设置】(Settings)点击右上角的OpenSettings(JSON)在最后一个反括号里面加一句“ter

普冉PY32系列(十) 基于PY32F002A的6+1通道遥控小车I - 综述篇

目录普冉PY32系列(一)PY32F0系列32位CortexM0+MCU简介普冉PY32系列(二)UbuntuGCCToolchain和VSCode开发环境普冉PY32系列(三)PY32F002A资源实测-这个型号不简单普冉PY32系列(四)PY32F002A/003/030的时钟设置普冉PY32系列(五)使用JLinkRTT代替串口输出日志普冉PY32系列(六)通过I2C接口驱动PCF8574扩展的1602LCD普冉PY32系列(七)SOP8,SOP10,SOP16封装的PY32F002A/PY32F003管脚复用普冉PY32系列(八)GPIO模拟和硬件SPI方式驱动无线收发芯片XN297L

STM32使用通用定时器中断服务程序实现ms级延时

STM32使用通用定时器中断服务程序实现ms级延时使用通用定时器的原因使用定时器延时的注意问题定时时长的确定目前测试实现的结果使用程序需要注意程序执行流程图程序示例使用通用定时器的原因定时器和中断的关系:定时器不受中断函数的影响,不会因为进入中断服务程序就停止计时。例如:定时器计时2s,中断函数执行需要0.1s,第二次继续计时就从上次的2s继续,而不是从2.1s再开始定时。它并不等待中断函数直接计时,相当于它计时它的,中断函数自己执行。利用这个特点,我们可以通过定时器进入中断函数的次数,和定时器进入中断服务程序的时间来进行延时。延时时间=进入中断的次数*定时器进入中断时间。具体实现可看代码。使

【深度学习高效小trick】使用Linux服务器一段时间后出现‘Socket error Event: 32 Error: 10053’,快速带你解决连接失败!

问题描述:        使用【Xshell】软件的时候,我们通常会把程序挂在【Xshell】主页上,这样可以随时随地的看到深度学习代码训练的进程。但是,把自己的程序挂上一天,或者一段时间不操作【Xshell】,就会出现这个问题。然后,你再次连接还可以连接,就是你的程序得重新跑了。         然而,当你,再次连接后,可能过上三五分钟,又出现这个提示并且断开了,是不是很烦?        下面的方法,可能帮助你!一起看看吧原因分析:使用【Xshell】软件,用ssh连接是,如果你连接过于频繁或者连接之后长时间不操作,都会出现这个报错问题解决:三种解决方案,三种不同的思想。我们一起尝试!①修

Keil MDK编程环境下的 STM32 IAP下载(学习笔记)

IAP下载IAP的引入不同的程序下载方式ICPICP(InCircuitPrograming)。在电路编程,可通过CPU的DebugAccessPort烧录代码,比如ARMCortex的DebugInterface主要是SWD(SerialWireDebug)或JTAG(JointTestActionGroup);ISPISP(InSystemPrograming)。在系统编程,可借助MCU厂商预置的Bootloader实现通过板载UART或USB接口烧录代码,比如STM32存储映射Code分区中的Systemmemory可以预置厂商的Bootloader,让MCU支持通过UART下载(不限于

代码随想录Day32 动态规划01 LeetCodeT509 斐波那契数列 T70 爬楼梯 T746 爬楼梯的最小消耗

前言:动态规划基础动态规划首先可以解决的问题有背包问题,打家劫舍问题,股票问题,子序列问题等,主要是将一个大的问题切分成多个重叠的子问题,所以动态规划一定是上一个状态递推过来的,有一个重要的状态转移方程,但是这也并不是解题的全部,我们将动态规划的题目基本分为五步来完成,1.搞明白dp数组的含义2.搞明白状态转移方程怎么写3.数组如何初始化4.确定遍历方式5.在错误的时候打印出dp数组查看分析问题LeetCodeT509斐波那契数列题目链接:509.斐波那契数-力扣(LeetCode)题目思路:1.dp数组定义这里我们定义一个数组来表示斐波那契数列int[]dp=newint[n+1];为什么要

stm32f407关于通用定时器各种函数——PWM(二)

一、PWM        定时器产生PWM:在计数器频率固定时,PWM频率由自动重载寄存器(TIMx_ARR)的值决定,其占空比由捕获/比较寄存器(TIMx_CCRx)的值决定        定时器工作在递增计数模式,纵轴是计数器的计数值CNT,横轴表示时。当CNT=CCRx时,IO输出高电平(逻辑1);当CNT=ARR时,定时器溢出,CNT的值被清零,然后继续递增,依次循环。在这个循环中,改变CCRx的值,就可以改变PWM的占空比,改变ARR的值,就可以改变PWM的频率,这就是PWM输出的原理。        此外根据定时器工作方式还有如下的pwm方式:         STM32F407的

stm32 usb 使用typec接口电路

芯片:stm32f411ret6电路图:只是device模式。测试步骤:stm32cubemx配置usb加cdc模式,在dp引脚配置为上拉。烧写代码后就可以看到一个虚拟串口设备了。注意:stm32的usb做了阻抗匹配,然后内部也有相应的上下拉电阻。所以信号线直接连就可以,但是配置的时候上下拉电阻要自己设置。这是f411的数据手册。

ARM开发,stm32mp157a-A7核(UART总线实验)

1.目标:键盘输入一个字符'a',串口工具显示'b';      键盘输入一个字符串"nihao",串口工具显示"nihao";2.框图分析:  3.代码:---.h头文件---#ifndef__UART4_H__#define__UART4_H__#include"stm32mp1xx_rcc.h"#include"stm32mp1xx_gpio.h"#include"stm32mp1xx_uart.h"//RCC/GPIO/UART4章节初始化voidhal_uart4_init();//发送一个字符函数voidhal_put_char(constcharstr);//发送一个字符串函数v