第一章:STM32MxCube 基本使用方法

    今天是2018年5月29日,大学马上毕业,在公司实习快半年多了,搞嵌入式开发,学习了很多技术,积累了很多经验。今天开始分别总结一下。希望给后来者一些经验,少走一些弯路,也作为日后学习、回顾的资料。

今天第一讲将STM32STM32MxCube 基本使用。stm32cubemx是ST公司推出了专门用于生成STM32的HAL代码的代码生成软件。所以学习stm32cubemx也就学习了用HAL库开发STM32的相关技术。stm32cubemx利用可视化界面来进行STM32p配置,所以时钟、滴答定时器、DMA、串口、GPIO等就不用根据数据手册去操作标准库甚至是寄存器了。

以下内容我学习、参考了这位兄台的博客:

http://bbs.21ic.com/icview-1697810-1-1.html

以下一stm32f407zet6控制器为例进行讲解:

下面进入正题

一.stm32cubemx的安装

一般来说可以再ST官方网站上下载安装包,并加载所使用的芯片资料包。才能使用,且只能配置加载的资料包内的芯片。

安装过程可参考以下博客:

https://blog.csdn.net/jinchengzhou/article/details/73527508

二.stm32cubem基本使用

1、stm32cubem界面

2、stm32cubemx建立工程


得到图形化界面,首先要选择自己所使用的芯片。第一步就是选择内核版本


然后选择产品系列、产品线、封装、引脚数


将会得到所有符合选参数的芯片型号。


选择所使用的芯片型号,这里选择STM32F407ZGT6,将显示当前芯片的封装、FLASH、时钟频率、引脚数、运行内存等参数。双击即可进入引脚配置界面。


查看LED电路图,可知点亮LED需要将引脚置位低。分别接PF9和PF10。那么首先就要配合这两个IO口。

进入到芯片上,滚动鼠标,可放大、缩小芯片。选择PF9和PF10,LED灯,应配置为输出。配置如下:


点击  ,配置IO状态


进入后,可配置初始电平、上拉/下拉模式、GPIO模式、GPIO速度等。这里选择初始电平为低(LED亮)、推挽输出、上下拉、低速运行模式。


再次就是配置时钟、一般会有默认,但也可以配置。根据图形选择系统时钟(内部、外部、低俗、高速时钟),并根据各连接器配置每个外设的时钟。。选择高速时钟。



如果有必要还可以配置其他选项


配置完成后,需要配置生成路径。

    

选择设置参数,特别是开发环境选择,区分KEIL4、keil5..注意不同的资料包,生成的代码,运行的环境存在不兼容的情况。

  

生成代码


生成结束


至此,代码生成结束,将工程打开后,下载到单片机中,可以看到两个LED被点亮。

下面讲一下关于该软件的一些配置,此列用于配置stm32所有外设。可最大简化编程流程。


下面的设置,用于配置代码是否被覆盖等。修改代码后,再次修改界面配置,可能会覆盖原来修改过的的代码,因此需要进行设置。


下面表示该工程配置那些外设。


一般只有在相应位置添加代码,重新生成代码后,不会覆盖原来添加的代码、文件等。

  /* USER CODE BEGIN 1 */
添加代码
  /* USER CODE END 1 */


要在STM32F103上模拟键盘,您可以使用USB HID(Human Interface Device)库来实现。 以下是一些关键步骤: 1.启用USB功能: 在 STM32CubeMX 中,选择 USB Device模块,并启用HID功能。 2.配置USB时钟:在 STM32CubeMX 中,配置系统时钟和USB时钟以支持USB操作。 3.生成代码:使用 STM32CubeMX 生成代码,并将其导入到您的开发环境中。 4.编写代码:在您的代码中,使用HID库函数配置和发送模拟键盘数据。 这里有一些示例代码,可以让您了解如何使用USB HID库来模拟键盘: ```c #include "usbd_hid.h" USBD_HandleTypeDef hUsbDeviceFS; uint8_t keyboard_report_data[8]; void send_key(uint8_t key) { keyboard_report_data[0] = 0; keyboard_report_data[2] = key; USBD_HID_SendReport(&hUsbDeviceFS, keyboard_report_data, 8); } void release_key() { keyboard_report_data[0] = 0; keyboard_report_data[2] = 0; USBD_HID_SendReport(&hUsbDeviceFS, keyboard_report_data, 8); } int main(void) { // 初始化 USB MX_USB_DEVICE_Init(); // 发送模拟键盘数据 while (1) { send_key(KEY_A); HAL_Delay(1000); release_key(); HAL_Delay(1000); } } ``` 在这个例子中,我们定义了一个 `send_key` 函数,它将键盘数据发送到主机,并一个 `release_key` 函数,它将键盘释放。 在主循环中,我们使用 `send_key` 函数发送一个“ A”键,并在1秒后使用 `release_key` 函数释放它。 请注意,这只是一个简单的示例,您需要根据您的需求进行修改。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值