hal库uc1701液晶LCD12864驱动程序移植

广州贺工 回复了问题 • 7 人关注 • 8 个回复 • 4187 次浏览 • 2018-09-10 12:37 • 来自相关话题

CubeMX配置stm32 F103RCT6实现USB bulk传输

乌龟也会飞 发表了文章 • 2 个评论 • 243 次浏览 • 2018-09-07 14:47 • 来自相关话题

友情提示请全屏查看(By荒野大嫖客)ST官方虽然提供很多关于USB固件库集成的(像什么VCP HID等等),但是吧在我们实际的项目开发中VCP(虚拟串口基本不用吧)另外官方提供的驱动程序都是ST厂商标志的,这对于我们来说给客户产品的时候驱动商标是别人公司好像挺不好的,故此鉴于项目的实际开发所需我们一般都是实现一个自定义的USB协议而非什么VCP 大容量的U盘之类的来通信(当然有这个需要的除外).于是就想ST把USB底层的协议都已经搞定了那么修修改改就应该能实现我所需要的了,在这过程中由于对USB协议不必熟悉弄起来不容易,其余的论坛上下载动不动就是要金币或者去买他的开发板才给你源码,或者动不动就是什么VCP来冒充根本就不是我所需要的 本文为cubeMX实现bulk批量传输,实现过程借鉴了网上最小量修改实现HID双向通信http://www.stm32cube.com/article/138 在此致谢Digital_Chip 由于HID的通信速率相对来说不是很高,如果要进行大数据量高速度传输就有可能不太满足条件,故此使用bulk传输是一个不错的选择,好了废话就说这么多了,我把过程发出来一是作为自己弄这个的一个总结将来需要时自己好看一下,二是给其余所需要的人提供点思路,完全免费的啊,不想他们动不动就是你买我开发板我给你源码 (火大)   荒野大嫖客太穷了(呜呜)历时两天才搞定,资质较差如果看官觉得有用给个赞吧一 条件cubeMX4.26.1 MDK5 F1的固件库 芯片stm32F103RCT6(F1系列根据自己的板子来选,我手边没有F4的固定可能有些函数不一样,不过也可以作为一种参考来实现F4)1,开启外部晶振 开启debug功能(我是SWD,如果板载是SWD接口不开启此功能的话第二次下载程序就会下载不进去 需要在复位状态下下载)  开启USB外设 在中间件上选择CDC(虚拟串口,需要用它来改)二:配置系统时钟72MHz(根据自己需要) USB为48MHz(必须)三:更改USB的中间件(可以不更改 自己做实验的话) 如果项目的话更改(比如PID VID更改为自己公司的去掉ST公司的字符串等)我做如下更改1024纪念程序员 鲁班大师(我的最爱,虽然比较坑都一年多了还在钻石 呜呜)四:初始化生成代码五:修改描述符 将usbd_des.c中的USBD_FS_DeviceDesc[USB_LEN_DEV_DESC]数组修改为如下六修改配置描述符 接口描述符等七:将下面的__ALIGN_BEGIN uint8_t USBD_CDC_CfgFSDesc[USB_CDC_CONFIG_DESC_SIZ] 和__ALIGN_BEGIN uint8_t USBD_CDC_OtherSpeedCfgDesc[USB_CDC_CONFIG_DESC_SIZ] 数组中的内容修改成和上面的一样就不贴图了八将USB_CDC_CONFIG_DESC_SIZ   修改为32九:定义两个变量 用于缓存数据 (全局的啊,其他.c文件可以访问的 我放在main.c中定义的 申明在头文件 其余所使用的地方包含该头文件) 并修改USBD_CDC_Init入下第二张图片十 :修改USBD_CDC_DataOut如下十一:在main.c的头文件中加载如下头文件 并修改main.c中的while(1)循环如下实现bulk通信回环好到此所有的bulk更改部分已经完成了,下面是见证奇迹的石头,编译程序下载程序不贴图了(由于我之前就做成功了,PID 和VID就是1024所以下完程序后插上USB就自动加载驱动了为了更好的展示效果我将本次的工程的PID和VID更改为如下,展示目前不能加载驱动)下载程序后重新插上USB在电脑的设备管理器中看到了我们的鲁班大师 智商250标志但是是黄色的因为没有驱动嘛右键属性看PID和VID是我们后设置的 可以使用电脑的计算机程序员模式转换至此USB bulk传输过程设备已经完成了验证,下面为试验可以进行通信我是用的是VISA来做驱动的打开NI_VISA Driver Wizard 进入如下界面选择USB 电机next 选中我们的设备 ranh然后一路狂点next知道finish最后驱动制作完成然后重新打开设备管理器查看我们的设备 驱动加载正常 没有了黄色图标以上为驱动制作加载完成,这只是证明了能够识别了,但是能不能通信呢请看下面 还是VISA 目前制作简单测试啊没有写专门的上位机 打开VISA Interactive ctrol 双击我们的设备双击后进入以下界面 可以看到我们设备的一些信息选择input/output界面在发送兰中写入要发送的数据,随便发目前只做了回环没有定义什么命令之类的发送什么,那么就应该回什么点击write变成如下情况点击Read后变成了如下界面通过以上两张图片对比发现我们实现了回环测试发送什么就接受到什么 以上证明了我们的设计是符合要求的,用于项目的话还需要进行相关的数据进行协议组织,同时增加方式提高传输速度等                                                                    以上整理提供by荒野大嫖客     如果有幸你读到这篇文章给个赞吧 查看全部

友情提示请全屏查看(By荒野大嫖客)

ST官方虽然提供很多关于USB固件库集成的(像什么VCP HID等等),但是吧在我们实际的项目开发中VCP(虚拟串口基本不用吧)另外官方提供的驱动程序都是ST厂商标志的,这对于我们来说给客户产品的时候驱动商标是别人公司好像挺不好的,故此鉴于项目的实际开发所需我们一般都是实现一个自定义的USB协议而非什么VCP 大容量的U盘之类的来通信(当然有这个需要的除外).于是就想ST把USB底层的协议都已经搞定了那么修修改改就应该能实现我所需要的了,在这过程中由于对USB协议不必熟悉弄起来不容易,其余的论坛上下载动不动就是要金币或者去买他的开发板才给你源码,或者动不动就是什么VCP来冒充根本就不是我所需要的 本文为cubeMX实现bulk批量传输,实现过程借鉴了网上最小量修改实现HID双向通信http://www.stm32cube.com/article/138 在此致谢Digital_Chip 

由于HID的通信速率相对来说不是很高,如果要进行大数据量高速度传输就有可能不太满足条件,故此使用bulk传输是一个不错的选择,好了废话就说这么多了,我把过程发出来一是作为自己弄这个的一个总结将来需要时自己好看一下,二是给其余所需要的人提供点思路,完全免费的啊,不想他们动不动就是你买我开发板我给你源码 (火大)   荒野大嫖客太穷了(呜呜)历时两天才搞定,资质较差如果看官觉得有用给个赞吧

一 条件cubeMX4.26.1 MDK5 F1的固件库 芯片stm32F103RCT6(F1系列根据自己的板子来选,我手边没有F4的固定可能有些函数不一样,不过也可以作为一种参考来实现F4)

1,开启外部晶振 开启debug功能(我是SWD,如果板载是SWD接口不开启此功能的话第二次下载程序就会下载不进去 需要在复位状态下下载)  开启USB外设 在中间件上选择CDC(虚拟串口,需要用它来改)

image.png

二:配置系统时钟72MHz(根据自己需要) USB为48MHz(必须)

image.png

三:更改USB的中间件(可以不更改 自己做实验的话) 如果项目的话更改(比如PID VID更改为自己公司的去掉ST公司的字符串等)我做如下更改1024纪念程序员 鲁班大师(我的最爱,虽然比较坑都一年多了还在钻石 呜呜)

image.png

四:初始化生成代码

image.png

五:修改描述符 将usbd_des.c中的USBD_FS_DeviceDesc[USB_LEN_DEV_DESC]数组修改为如下

image.png六修改配置描述符 接口描述符等
image.png

七:将下面的__ALIGN_BEGIN uint8_t USBD_CDC_CfgFSDesc[USB_CDC_CONFIG_DESC_SIZ] 和__ALIGN_BEGIN uint8_t USBD_CDC_OtherSpeedCfgDesc[USB_CDC_CONFIG_DESC_SIZ] 数组中的内容修改成和上面的一样就不贴图了

八将USB_CDC_CONFIG_DESC_SIZ   修改为32

image.png

九:定义两个变量 用于缓存数据 (全局的啊,其他.c文件可以访问的 我放在main.c中定义的 申明在头文件 其余所使用的地方包含该头文件) 并修改USBD_CDC_Init入下第二张图片


image.png

image.png



十 :修改USBD_CDC_DataOut如下

image.png


十一:在main.c的头文件中加载如下头文件 并修改main.c中的while(1)循环如下实现bulk通信回环

image.png

image.png

好到此所有的bulk更改部分已经完成了,下面是见证奇迹的石头,编译程序下载程序不贴图了(由于我之前就做成功了,PID 和VID就是1024所以下完程序后插上USB就自动加载驱动了为了更好的展示效果我将本次的工程的PID和VID更改为如下,展示目前不能加载驱动)

image.png


下载程序后重新插上USB在电脑的设备管理器中看到了我们的鲁班大师 智商250标志但是是黄色的因为没有驱动嘛

image.png

右键属性看PID和VID是我们后设置的 可以使用电脑的计算机程序员模式转换

image.png


至此USB bulk传输过程设备已经完成了验证,下面为试验可以进行通信我是用的是VISA来做驱动的

打开NI_VISA Driver Wizard 

image.png


进入如下界面


image.png


选择USB 电机next 

image.png

选中我们的设备 ranh然后一路狂点next知道finish最后驱动制作完成

然后重新打开设备管理器查看我们的设备 驱动加载正常 没有了黄色图标

image.png

image.png

以上为驱动制作加载完成,这只是证明了能够识别了,但是能不能通信呢请看下面 还是VISA 目前制作简单测试啊没有写专门的上位机 打开VISA Interactive ctrol 双击我们的设备

image.png

双击后进入以下界面 可以看到我们设备的一些信息

image.png

选择input/output界面

image.png

在发送兰中写入要发送的数据,随便发目前只做了回环没有定义什么命令之类的发送什么,那么就应该回什么

点击write变成如下情况

image.png

点击Read后变成了如下界面

image.png

通过以上两张图片对比发现我们实现了回环测试发送什么就接受到什么 以上证明了我们的设计是符合要求的,用于项目的话还需要进行相关的数据进行协议组织,同时增加方式提高传输速度等

                                                                    以上整理提供by荒野大嫖客     如果有幸你读到这篇文章给个赞吧



利用stm32cube实现USB+FATFS的usbdisk程序--实现Fatfs对U盘文件操作

後知後覺 回复了问题 • 56 人关注 • 26 个回复 • 13516 次浏览 • 2018-09-05 15:44 • 来自相关话题

多路扫描AD转换,用DMA传输的例子(用STM32CUBEMX)

心中有个梦 回复了问题 • 52 人关注 • 32 个回复 • 22094 次浏览 • 2018-09-03 15:46 • 来自相关话题

记录stm32F4discovery板利用stm32cubemx实现串口的usart_IAP功能全过程

overture1928 回复了问题 • 20 人关注 • 19 个回复 • 6553 次浏览 • 2018-08-23 16:25 • 来自相关话题

分享一个由串口uart接收命令,来动态调整tim定时器pwm模式脉冲宽度的小实验

想飞的四轴 回复了问题 • 41 人关注 • 19 个回复 • 9611 次浏览 • 2018-08-17 12:20 • 来自相关话题

利用stm32cubemx移植freemodbus代码分享,片子是stm32F407,记录整个调试过程,供大家参考

兰生 回复了问题 • 74 人关注 • 31 个回复 • 21898 次浏览 • 2018-08-13 16:48 • 来自相关话题

stm32cube中文教程1:软件设置,点亮led灯,并实现流水灯效果(HAL_GPIO_TogglePin)

自定义 回复了问题 • 43 人关注 • 14 个回复 • 19203 次浏览 • 2018-07-21 20:06 • 来自相关话题

一步步实现stm32cube的usb之CUSTOM_HID当串口使用 (stm32F407discoery板)

梦回庄周 回复了问题 • 35 人关注 • 26 个回复 • 6368 次浏览 • 2018-07-16 17:36 • 来自相关话题

鉴于好多人问,分享个24C64的HAL库文件和使用操作(利用硬件库iic)

小帅o同学 回复了问题 • 7 人关注 • 9 个回复 • 5156 次浏览 • 2018-07-01 20:14 • 来自相关话题

(转)基于STM32Cube库的Timer捕获应用

admin 发表了文章 • 0 个评论 • 498 次浏览 • 2018-06-14 09:19 • 来自相关话题

当使用Timer做捕获输入时,有时候需要将捕获得到的数据通过DMA方式写到定义好的数据或数组中,本文将详细介绍使用CubeMX配置PWM捕获功能,用户可以直接得到输入的PWM信号的频率以及占空比,Cube库可以很方便配置。实验过程中,当配置超过两个以上的Timer通道DMA时会遇到一些问题,本文也对其进行了说明并给出了解决方案。Timer2的PWM信号捕获功能√使用Timer的IC1,IC2两个捕获输入通道,两个通道的外部管脚输入配置为相同TI1通道;√两个通道的捕获输入极性,一个为Active,另外一个为Inactive;√其中一个TI1FP1作为触发输入,从模式配置为复位模式;√这样CCR1为PWM输入的频率值,CCR2为占空比值(正/负)。使用STM32CubeMX对外设进行初始化配置:Step1: TIM1的输出PWM波作为捕获输入的被测信号,输出管脚为PA8Step2: TIM2的输入管脚为PA5(CH1)Step3: 配置TIM2的输入捕获参数Step4: 捕获数据直接通过DMA方式保存到RAM变量Update_Value1和Update_Value2。Step5: 测试读取到的CCR1、CCR2的数据与Update_Value1、Update_Value2对应,PWM波的频率和占空比都可以捕获得到。实验过程要点提示在stm32f3xx_hal_tim.c库文件中的HAL_TIM_IC_Start_DMA函数中会将状态置忙。但在函数结尾配置完毕后没有将该状态位复位,如果客户在其用户程序中使用了这个函数,这会导致该状态位始终为忙,后续任何对该状态的判断配置都将无法执行:因此需要在函数的最后将状态复位:本文小结本文重点介绍利用STM32CubeMX初始化配置工具和STM32Cube库如何通过TIMER的捕获功能完成对频率、占空比的测试,同时我们对如何解决实验过程中遇到的一些问题,做了特别提示。我们知道STM32Cube库非常庞大,虽难尽善尽美,但一定会越来越强大、越来越完善。本文转自:https://mp.weixin.qq.com/s/e2M22gpqFmOKee36MFe9oQ感谢ST人的分享和付出! 查看全部

当使用Timer做捕获输入时,有时候需要将捕获得到的数据通过DMA方式写到定义好的数据或数组中,本文将详细介绍使用CubeMX配置PWM捕获功能,用户可以直接得到输入的PWM信号的频率以及占空比,Cube库可以很方便配置。

实验过程中,当配置超过两个以上的Timer通道DMA时会遇到一些问题,本文也对其进行了说明并给出了解决方案。

Timer2的PWM信号捕获功能


使用Timer的IC1,IC2两个捕获输入通道,两个通道的外部管脚输入配置为相同TI1通道;

两个通道的捕获输入极性,一个为Active,另外一个为Inactive;

其中一个TI1FP1作为触发输入,从模式配置为复位模式;

这样CCR1为PWM输入的频率值,CCR2为占空比值(正/负)。

webwxgetmsgimg.jpg


使用STM32CubeMX对外设进行初始化配置:


Step1: TIM1的输出PWM波作为捕获输入的被测信号,输出管脚为PA8

Step2: TIM2的输入管脚为PA5(CH1)

webwxgetmsgimg (1).jpg

Step3: 配置TIM2的输入捕获参数

webwxgetmsgimg (2).jpg

Step4: 捕获数据直接通过DMA方式保存到RAM变量Update_Value1和Update_Value2。

webwxgetmsgimg (3).jpg

Step5: 测试读取到的CCR1、CCR2的数据与Update_Value1、Update_Value2对应,PWM波的频率和占空比都可以捕获得到。


webwxgetmsgimg (4).jpg


实验过程要点提示


在stm32f3xx_hal_tim.c

库文件中的HAL_TIM_IC_Start_DMA函数中会将状态置忙。

webwxgetmsgimg (5).jpg

但在函数结尾配置完毕后没有将该状态位复位,如果客户在其用户程序中使用了这个函数,这会导致该状态位始终为忙,后续任何对该状态的判断配置都将无法执行:

webwxgetmsgimg (6).jpg

因此需要在函数的最后将状态复位:

webwxgetmsgimg (7).jpg

本文小结

本文重点介绍利用STM32CubeMX初始化配置工具和STM32Cube库如何通过TIMER的捕获功能完成对频率、占空比的测试,同时我们对如何解决实验过程中遇到的一些问题,做了特别提示。我们知道STM32Cube库非常庞大,虽难尽善尽美,但一定会越来越强大、越来越完善。



本文转自:https://mp.weixin.qq.com/s/e2M22gpqFmOKee36MFe9oQ


感谢ST人的分享和付出!

CAN的Loopback模式例程的设置及程序分析

虎扑最大的吊 回复了问题 • 6 人关注 • 7 个回复 • 3812 次浏览 • 2018-06-10 19:56 • 来自相关话题

记录:利用U盘直接烧录hex文件到flash来更新app程序

翻滚吧小乌龟 回复了问题 • 25 人关注 • 14 个回复 • 5529 次浏览 • 2018-05-28 15:10 • 来自相关话题

(直播)利用stm32cubemx实现USBDFU对芯片程序的更新升级(板卡stm32f4discovery)

无帝老三 回复了问题 • 34 人关注 • 19 个回复 • 12012 次浏览 • 2018-05-24 15:51 • 来自相关话题

(分享)在Cube的Hal库做IO口的GPIO组处理方法!一次操作读写多IO端口方法

admvip73 回复了问题 • 13 人关注 • 10 个回复 • 8523 次浏览 • 2018-04-23 17:04 • 来自相关话题