[color=var(--blur-text-color) !important]配置环境[color=var(--blur-text-color) !important]最近忙于比赛,终于有空写下C0的开发教程 1.首先我们先下载STM32CUBEMX [color=var(--blur-text-color) !important]STM32CubeMX:图形化工具 - 意法半导体STMicroelectronics 我们找到官网上的stm32CUBEMX下载的网址,之后推荐先注册一下账号,因为后面下载软件支持包也需要账号。 下载完成之后,我们需要下载一下我们的软件支持包。 我们使用的板子是STM32C0,所以我们需要下载对应的支持包。这里我们最后点击install,就可以将我们的支持包下载。 这里我们选择对应的芯片型号。 1.配置系统时钟、 在STM32单片机中,时钟是我们的程序一切的核心,我们一般首先配置的是时钟信号。在这里我们一般选择的是,外部时钟晶振,相对于内部RC起振,时钟信号更温度,内部RC起振会收到温度的影响。这里我们都将我们的外部和内部都选择外部时钟晶振。 2.时钟的选择一般我们在开发的时候,首选的是当前MCU最高的主频来操作。 3.点亮熄灭LED灯 首先我们收到板卡之后,我们需要先下载板卡的数据手册,根据我们的数据手册观察如何操控外设。这里是STM32C031板块的原理图:[color=var(--blur-text-color) !important]https://www.st.com/content/ccc/resource/technical/layouts_and_diagrams/schematic_pack/group2/9e/c0/20/c5/ec/bf/40/26/MB1717-C031C6-B02_Schematic/files/MB1717-C031C6-B02_Schematic.PDF/jcr:content/translations/en.MB1717-C031C6-B02_Schematic.PDF 我们看到LD4是通过3.3V连接之后,通过一个三极管由PA5控制。我们看到原理图可以知道,我们只要控制PA5的高低电平就能实现我们的LD4的亮灭。好分析完原理,我们就开始配置我们的引脚。 这里是我们的GPIO的相关配置,配置我们小灯的初始化。 基本配置完成,我们要创建我们的项目! [color=var(--blur-text-color) !important]项目配置由于我们的板卡自带了ST-LINK芯片,所以我们需要下载ST-Link驱动。我们在官网下载驱动:[color=var(--blur-text-color) !important]STSW-LINK009 - ST-LINK, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 USB driver signed for Windows7, Windows8, Windows10 - STMicroelectronics我们解压之后双击之后,点击amd64下载我们的驱动。 首先我们先配置我们的底层:因为我们使用的stm32C0,所以我们要再keil引入我们的包。[color=var(--blur-text-color) !important]Arm Keil | Keil STM32C0xx_DFP点击这里进行下载我们的包。下载完成之后我们就可以打开我们的项目工程了! 在首次编译的时候,我发现出现了许多弱定义的报错,在后面分析了一下,可能版本选太高了不支持弱定义。 解决方法: 我们再次编译 0错误0警告,我们成功将工程模板创建完成。 [color=var(--blur-text-color) !important]控制小灯我们的小灯的IO口默认为是一个GPIO口,所以我们可以通过函数来对我们的小灯的高低电平进行控制。我们可以在文件里面找到,关于GPIO的配置,根据其中的配置我们可以使用俩个函数来进行我们的操作。void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) 写GPIO电平void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) 翻转GPIO电平 这次我们使用写GPIO电平来实现我们的小灯控制亮灭。 看见下面的代码我们就开始好奇,我们刚刚不是定义了PA5吗,为什么现在是用LED灯控制我们的引脚。 我们前往main.h中查看,原来我们刚刚上面配置的命名,已经将我们的LED灯给宏定义除我们的管脚名称和管脚号,这样更方便知道我们的引脚的意思。 这里我们来分析一下HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState),三个形参的作用。首先我们我们将前俩个形参认为是一起的,因为我们想控制某个IO口,肯定要告诉单片机在叫什么名字在第几列。所以前俩个形参就是告诉单片机其中的GPIOA口,其中的第五个引脚。我们可以看到(GPIO_PIN_RESET: to clear the port pin)就是清除我们的引脚电平,就是将我们的引脚赋值为0反之,我们GPIO_PIN_SET将我们的引脚至为高电平。 通过我们上面对原理图的分析,我们可以知道只要我们把LED的PA5拉高,三极管导通,就能实现点亮LED灯的效果。就是将我们的PA5设置为高电平,所以我们就使用GPIO_PIN_SET HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);我们点击编译下载! 注意在下载之前我们要进行的操作配置一下,下载完成之后复位。 好了我们成功将我们的下载完成复位配置完成。 之后我们查看一下小灯的效果。我们可以看到小灯成功点亮! 我们将HAL_GPIO_WritePin修改为RESET,下载编译,查看一下小灯效果 HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);三极管截止,小灯就不亮了。 我们可以看到小灯成功关闭。我们就学习到小灯的控制,之后我们下次我们就学习按键控制小灯的翻转。 |
L9663驱动开发
STM32F413ZGT6的NRST需要接上拉电阻吗
电机开发套件Workbench过流检测窗口参数疑问
【求问】ST无刷电机控制器-最高控制可调节转速是多少?
stm32mp257fai3 能否在uboot阶段同时启动m核与a核?
cubeIDE在运行时显示Failed to execute MI command是什么问题呢?
stm32f103USART2无法收发信息
cubemx安装HAL库时要账号登录,点击注册,显示错误,ST官网点击注册也是显示错误,请问是什么问题?
STM32MP135无法用NFS开机挂载文件系统启动,报错root '/dev/nfs' doesn't exist
STM32H747I-DISCO开发板无法连接芯片