提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
一、ST官方给的文件(UM1718)
二、HAL库函数速查手册 | 波特律动
三、练习(STM32F103C8T6)
1.配置
2.代码部分
总结
前言
初次接触stm32cubemx,发现这个软件能直接生成初始化,和之前在学校学的标准库不一样,以前标准库还是自己手动配置的工程文件,手写的写的.c、.h文件,当时我就在想老师要求各个外设初始化的时候需要模块化,每个外设初始化配置的东西也差不多,完全可以官方配置好,我们自己修改参数就行。现在这个软件通过图形化的形式配置时钟,设置外设,省去很多时间,但是我想写一点东西的时候就一点无从下手,不知道调用什么函数,目前就搜集了一些资料,虽然ai现在直接跟它说,它几秒钟就写好了,但是感觉自己印象不深刻,轮到自己敲还是犯难。
一、ST官方给的文件(UM1718)
这部分还是介绍软件生成代码的,介绍了几个文件的作用,以及命名规则。
官方给的串口初始化,一般配置外设都是这几个函数,注意配置函数和释放函数的区别,不要看成一个了。
二、HAL库函数速查手册 | 波特律动
还是不知道能用哪些函数,HAL库函数速查手册 | 波特律动这个网站可以查看,也可以直接看下面(这里显示的不全):
GPIO:
HAL_GPIO_WritePin(端口, 引脚号, 电平状态); // 写引脚电平 HAL_GPIO_ReadPin(端口, 引脚号); // 读引脚电平 HAL_GPIO_TogglePin(端口, 引脚号); // 翻转引脚电平例子:
// 写引脚 void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); // 示例:PB0输出高 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 读引脚 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); // 示例:读取PB0电平 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET){} // 翻转电平 void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);UART:
HAL_UART_Transmit(&串口句柄, 数据指针, 数据长度, 超时时间); // 串口发送(阻塞方式) HAL_UART_Receive(&串口句柄, 数据指针, 数据长度, 超时时间); // 串口接收(阻塞方式) HAL_UART_Transmit_IT(&串口句柄, 数据指针, 数据长度); // 串口发送(中断方式) HAL_UART_Receive_IT(&串口句柄, 数据指针, 数据长度); // 串口接收(中断方式) HAL_UART_Transmit_DMA(&串口句柄, 数据指针, 数据长度); // 串口发送(DMA方式) HAL_UART_Receive_DMA(&串口句柄, 数据指针, 数据长度); // 串口接收(DMA方式)例子:
// 阻塞发送,huart1是CubeMX自动生成的句柄 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); // 示例 uint8_t buf[]="Test OK\r\n"; HAL_UART_Transmit(&huart1, buf, sizeof(buf), 100);ADC:
HAL_ADC_Start(&ADC句柄); // 启动ADC转换(阻塞方式) HAL_ADC_Stop(&ADC句柄); // 停止ADC转换 HAL_ADC_Start_IT(&ADC句柄); // 启动ADC转换(中断方式) HAL_ADC_Stop_IT(&ADC句柄); // 停止ADC转换(中断方式) HAL_ADC_Start_DMA(&ADC句柄, 数据指针, 长度); // 启动ADC转换(DMA方式) HAL_ADC_Stop_DMA(&ADC句柄); // 停止ADC转换(DMA方式) HAL_ADC_PollForConversion(&ADC句柄, 超时时间); // 等待ADC转换完成(阻塞轮询) HAL_ADC_GetValue(&ADC句柄); // 获取ADC采样值三、练习(STM32F103C8T6)
1.配置
(1)Debug模式修改一下,改成图片上的,如果用no debug 会导致只能烧录一次,后面烧录会显示stlink连接不成功,解决措施就是在STM32 ST-LINK Utility这个软件上擦除已经烧录进去的东西。(连接不上:在软件里面选择“connect to the target”+按住stm32F103C8t6的复位键,擦除后记得断开连接,不然会占用设备)
(2)配置时钟树
这里一般选择HSE高速外部震荡器作为时钟源,比较稳定。
(3)导出
如果是用keil的话选择MDK-ARM,我这里配置的是cmake,所有的配置搞完选择右上角的'GENERATE CODE"就可以生成代码了。如果下一次有改动的话也是点一下这个就更新配置了。
2.代码部分
环境配置:vscode+stm32cubemx+cmake(在vscode里面搜索这个会安装配套的扩展包,不需要自己手动配置,顺带补充一下,在vscode的左下角的设置-配置文件-新建配置文件,可以将不同的环境区分开来)。
自定义文件:第一,在cmake文件下新建文件夹user,在user下面新建文件CMakeLists.txt(不能直接放在cmake下面那个,mx重新生成的时候这些会被覆盖掉);在文件根目录下面新建文件夹,创建.c和.h文件;按照图片内容在.txt文件下修改变量名(注意看清楚左侧选的文件)
- 复制cmake-stm32cubemx-camkelists.txt文件红框里面的内容到我们新建的.txt文件,
- 我们自己建的文件CMakeLists.txt里面是这样的,里面的内容都是前面去复制的。
- 在根目录下面的CMakeList.txt新增框起来的部分(这部分在blibli上看的视频没有第一个红框的部分,应该是我嵌入的ai编译错误之后给我加的,,,)
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。