知识不仅闹 发表于 2024-4-23 00:24:42

【STM32C0评测】1.开箱点亮小灯

配置环境最近忙于比赛,终于有空写下C0的开发教程
1.首先我们先下载STM32CUBEMXSTM32CubeMX:图形化工具 - 意法半导体STMicroelectronics我们找到官网上的stm32CUBEMX下载的网址,之后推荐先注册一下账号,因为后面下载软件支持包也需要账号。下载完成之后,我们需要下载一下我们的软件支持包。我们使用的板子是STM32C0,所以我们需要下载对应的支持包。这里我们最后点击install,就可以将我们的支持包下载。这里我们选择对应的芯片型号。创建工程1.配置系统时钟、在STM32单片机中,时钟是我们的程序一切的核心,我们一般首先配置的是时钟信号。在这里我们一般选择的是,外部时钟晶振,相对于内部RC起振,时钟信号更温度,内部RC起振会收到温度的影响。这里我们都将我们的外部和内部都选择外部时钟晶振。2.时钟的选择一般我们在开发的时候,首选的是当前MCU最高的主频来操作。3.点亮熄灭LED灯首先我们收到板卡之后,我们需要先下载板卡的数据手册,根据我们的数据手册观察如何操控外设。这里是STM32C031板块的原理图: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的相关配置,配置我们小灯的初始化。基本配置完成,我们要创建我们的项目!项目配置下载器配置由于我们的板卡自带了ST-LINK芯片,所以我们需要下载ST-Link驱动。我们在官网下载驱动:STSW-LINK009 - ST-LINK, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 USB driver signed for Windows7, Windows8, Windows10 - STMicroelectronics我们解压之后双击之后,点击amd64下载我们的驱动。keil的项目配置首先我们先配置我们的底层:因为我们使用的stm32C0,所以我们要再keil引入我们的包。Arm Keil | Keil STM32C0xx_DFP点击这里进行下载我们的包。下载完成之后我们就可以打开我们的项目工程了!在首次编译的时候,我发现出现了许多弱定义的报错,在后面分析了一下,可能版本选太高了不支持弱定义。解决方法:我们再次编译0错误0警告,我们成功将工程模板创建完成。控制小灯我们的小灯的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_SETHAL_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);三极管截止,小灯就不亮了。我们可以看到小灯成功关闭。我们就学习到小灯的控制,之后我们下次我们就学习按键控制小灯的翻转。
页: [1]
查看完整版本: 【STM32C0评测】1.开箱点亮小灯