[STM32F1] STM32f103USB移植之USB鼠标

[复制链接]
1828|9
 楼主| 范德萨发额 发表于 2024-3-30 22:08 | 显示全部楼层 |阅读模式
新建工程模板
        先新建一个空白工程模板,添加所需要的外设,把需要的库文件加入到文件中。USB文件中放入USB库文件,其中CONFIG文件夹中为USB接口文件,另一个文件夹放入USB内核文件。USB内核文件已经封装的很好了,不需要进行改动。

下载打开USB驱动库,其中库文件夹中的STM32F10x_StdPeriph_Driver为STM32F103的USB驱动内核文件,复制到工程文件夹中即可的的的的.project文件夹为官方示例文件,我们把JoyStickMouse中的公司和SRC文件内容添加到工程文件夹中(为USB库的接口文件)。

文件添加说明和文件作用参见正点原子的教程和ST官方的文件说明(在附件中可下载)

6181766081cddf1220.png

 楼主| 范德萨发额 发表于 2024-3-30 22:08 | 显示全部楼层
文件移植
        工程准备完成后开始进行移植了,JoyStickMouse的示例工程是使用官方的开发板上的四个按键控制鼠标的移动。我们这个移植是不使用外部硬件控制鼠标,而是让他自己动,我们通过画板来观察他的轨迹,如果有需要,可以自己添加相关的程序。

首先是更改 platform_config.h文件.platform_config.h是STM官方板子的资源平台引脚配置文件,我们使用的芯片是STM32F103系列,然后根据自己的开发板设置需要的引脚。

在platform_config.h中很多是为了支持不同芯片和不同开发板而进行的宏定义,我们不需要这么多,只保留下面几个。

7921166081cf1b29d6.png
 楼主| 范德萨发额 发表于 2024-3-30 22:09 | 显示全部楼层
我们主要需要改动的是hw_config.c这个文件,这个文件是硬件配置。例如初始化USB时钟低功耗模式等。我们先把和我们硬件无关的宏定义配置删掉,只保留了USB上拉引脚初始化,USB引脚初始化我们并不需要进行配置也可以使用(为什么?)。配置完成如下图所示。
1250166081cffa7517.png
 楼主| 范德萨发额 发表于 2024-3-30 22:09 | 显示全部楼层
然后我们配置USB时钟,修改Set_USBClock()函数,设置时钟为48MHZ。

同样我们先去除无关的宏定义,保留我们所需要的配置。
5152266081d0f5d09e.png
 楼主| 范德萨发额 发表于 2024-3-30 22:09 | 显示全部楼层
接下来我们删除void GPIO_AINConfig(void)这个函数。它是设置IO模式,使降低工作时的功耗,我们并不需要它,把它删去。

后面我们修改USB挂起模式,只保留一个语句即可。
4028866081d1dd1399.png
 楼主| 范德萨发额 发表于 2024-3-30 22:09 | 显示全部楼层
在配置中断优先级的函数中把无关项删除,保留需要的中断

4551566081d2a9f11c.png
 楼主| 范德萨发额 发表于 2024-3-30 22:10 | 显示全部楼层
更改函数USB_Cable_Config(FunctionalState NewState)它的作用是软件更改USB的连接或断开
8115466081d3e9ff76.png
 楼主| 范德萨发额 发表于 2024-3-30 22:10 | 显示全部楼层
我们之前修改了挂起/复位函数,void Leave_LowPowerMode(void)我们还需要对usb_pwr.c进行一些修改。把usb_pwr.c文件中void Suspend(void)函数后面部分删除掉。(从165行到212行)
2896866081d4a0b584.png
 楼主| 范德萨发额 发表于 2024-3-30 22:10 | 显示全部楼层
最后我们打开stm32_it.h保留USB两个中断
7369966081d560fae0.png
 楼主| 范德萨发额 发表于 2024-3-30 22:10 | 显示全部楼层
现在这些配置基本都移植好了,接下来我们就要更改,USB鼠标的移动函数了JoyState()和Joystick_Send()。这两个函数作用分别是返回检测并返回鼠标的移动状态和把数据通过USB发送。

        把JoyState()内容全部删除,添加一个return 1;然后更改Joystick_Send()函数。

        我通过串口把坐标值打印出来,方便查看

        说明一下:电脑屏幕坐标是在电脑左上角为坐标原点,从左向右,从上到下依次增大在想电脑发送的数组中,数据的含义为被左键点击,X坐标变化值, Ÿ左边的变化值,右键点击

        下面函数的是从鼠标现在的点开始每次向右移动5像素这是控制鼠标右移,如果需要左移的话,输入变化量为(255-左移变化量)或者直接输入( - 左移变化量)也行,不过这样会提示警告,会将UCHAR转为炭

7538466081d660ea40.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

1022

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部