没有合适的资源?快使用搜索试试~ 我知道了~
前言 stm32f1xx_hal_msp.c 文件定义了两个函数 HAL_MspInit 和 HAL_MspDeInit。这两个函数分别被文件 stm32f1xx_hal.c 中的 HAL_Init 和 HAL_DeInit 所调用。HAL_MspInit 函数的主要作用是进行 MCU相关的硬件初始化操作。例如我们要初始化某些硬件,我们可以硬件相关的初始化配置 写在HAL_MspDeinit 函数中。这样的话,在系统启动后调用了 HAL_Init 之后,会自动调用硬件初始化函数。 实际上,我们在工程模板中直接删掉 stm32f1xx_hal_msp.c 文件也不会对程序运行产生任何影响。 1.
资源推荐
资源详情
资源评论
STM32 HAL库之库之USB
前言前言
stm32f1xx_hal_msp.c 文件定义了两个函数 HAL_MspInit 和 HAL_MspDeInit。这两个函数分别被文件 stm32f1xx_hal.c 中的 HAL_Init 和 HAL_DeInit 所调用。
HAL_MspInit 函数的主要作用是进行 MCU相关的硬件初始化操作。例如我们要初始化某些硬件,我们可以硬件相关的初始化配置 写在HAL_MspDeinit 函数中。
这样的话,在系统启动后调用了 HAL_Init 之后,会自动调用硬件初始化函数。
实际上,我们在工程模板中直接删掉 stm32f1xx_hal_msp.c 文件也不会对程序运行产生任何影响。
1.函数组成函数组成
main.c里面仅包含一个USB设备函数初始化函数 MX_USB_DEVICE_Init(),在程序开始时调用。
usbd_cdc_interface.c为USB的CDC类应用层文件,里面包含虚拟串口的接收,发送和控制等函数。
usb_desc.c 包含USB的描述符,以及USB枚举处理等函数。
usb_conf.c 为USB管脚配置文件,包含引USB引脚初始化以及参数设置,中断回调函数等。
2.初始化初始化
定义USB结构体句柄
STM32
的标准库中,句柄是一种特殊的指针,通常指向结构体!
USBD_HandleTypeDef hUsbDeviceFS
在HAL库中,USBD初始化结构体变量,我们要定义为全局变量。所以说上述代码放在函数外边。句柄用于管理进程例程之间的共享数据资源,查看结构体
USBD_HandleTypeDef成员:
typedef struct _USBD_HandleTypeDef
{
uint8_t id;
uint32_t dev_config;
uint32_t dev_default_config;
uint32_t dev_config_status;
USBD_SpeedTypeDef dev_speed;
USBD_EndpointTypeDef ep_in[15];
USBD_EndpointTypeDef ep_out[15];
uint32_t ep0_state;
uint32_t ep0_data_len;
uint8_t dev_state;
uint8_t dev_old_state;
uint8_t dev_address;
uint8_t dev_connection_status;
uint8_t dev_test_mode;
uint32_t dev_remote_wakeup;
USBD_SetupReqTypedef request;
USBD_DescriptorsTypeDef *pDesc;
USBD_ClassTypeDef *pClass;
void *pClassData;
void *pUserData;
void *pData;
} USBD_HandleTypeDef;
声明用户自定义变量
//usbd_cdc_if.c
#define APP_RX_DATA_SIZE 2048
#define APP_TX_DATA_SIZE 2048
//通过USB接收的数据存储在此缓冲区中
uint8_t UserRxBufferFS[APP_RX_DATA_SIZE];
//通过USB CDC发送的数据存储在此缓冲区中
uint8_t UserTxBufferFS[APP_TX_DATA_SIZE];
USB初始化
//usb_device.c
void MX_USB_DEVICE_Init(void)
{
if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK)
{
Error_Handler();
}
if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK)
{
Error_Handler();
}
if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK)
资源评论
weixin_38544978
- 粉丝: 1
- 资源: 917
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功