你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
知识不仅闹 提问时间:2024-4-23 00:24 / 未解决
[color=var(--blur-text-color) !important]配置环境[color=var(--blur-text-color) !important]最近忙于比赛,终于有空写下C0的开发教程
1.首先我们先下载STM32CUBEMX
我们找到官网上的stm32CUBEMX下载的网址,之后推荐先注册一下账号,因为后面下载软件支持包也需要账号。
image-20240320143425839.png
下载完成之后,我们需要下载一下我们的软件支持包。
image-20240320144008726.png
我们使用的板子是STM32C0,所以我们需要下载对应的支持包。这里我们最后点击install,就可以将我们的支持包下载。
image-20240320143550893.png
这里我们选择对应的芯片型号。
image-20240320144131368.png
[color=var(--blur-text-color) !important]创建工程
1.配置系统时钟、
在STM32单片机中,时钟是我们的程序一切的核心,我们一般首先配置的是时钟信号。在这里我们一般选择的是,外部时钟晶振,相对于内部RC起振,时钟信号更温度,内部RC起振会收到温度的影响。这里我们都将我们的外部和内部都选择外部时钟晶振。
image-20240320144442220.png
2.时钟的选择一般我们在开发的时候,首选的是当前MCU最高的主频来操作。
image-20240320144909733.png
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
image-20240320145909040.png
我们看到LD4是通过3.3V连接之后,通过一个三极管由PA5控制。我们看到原理图可以知道,我们只要控制PA5的高低电平就能实现我们的LD4的亮灭。好分析完原理,我们就开始配置我们的引脚。
image-20240320151516824.png
这里是我们的GPIO的相关配置,配置我们小灯的初始化。
image-20240320152116483.png
基本配置完成,我们要创建我们的项目!
[color=var(--blur-text-color) !important]项目配置
image-20240320152625143.png
image-20240320152634780.png
image-20240320152753918.png
[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下载我们的驱动。
image-20240320154351808.png
[color=var(--blur-text-color) !important]keil的项目配置
首先我们先配置我们的底层:因为我们使用的stm32C0,所以我们要再keil引入我们的包。[color=var(--blur-text-color) !important]Arm Keil | Keil STM32C0xx_DFP点击这里进行下载我们的包。下载完成之后我们就可以打开我们的项目工程了!
image-20240320154519434.png
在首次编译的时候,我发现出现了许多弱定义的报错,在后面分析了一下,可能版本选太高了不支持弱定义。
image-20240320155156522.png
解决方法:
image-20240320154714167.png
我们再次编译
image-20240320154732141.png
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电平来实现我们的小灯控制亮灭。
image-20240320155530279.png
看见下面的代码我们就开始好奇,我们刚刚不是定义了PA5吗,为什么现在是用LED灯控制我们的引脚。
image-20240320155732016.png
我们前往main.h中查看,原来我们刚刚上面配置的命名,已经将我们的LED灯给宏定义除我们的管脚名称和管脚号,这样更方便知道我们的引脚的意思。
image-20240320155915815.png
这里我们来分析一下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将我们的引脚至为高电平。
image-20240320160619000.png
通过我们上面对原理图的分析,我们可以知道只要我们把LED的PA5拉高,三极管导通,就能实现点亮LED灯的效果。就是将我们的PA5设置为高电平,所以我们就使用GPIO_PIN_SET
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);我们点击编译下载!
image-20240320170911874.png
注意在下载之前我们要进行的操作配置一下,下载完成之后复位。
image-20240320160742982.png
好了我们成功将我们的下载完成复位配置完成。
之后我们查看一下小灯的效果。我们可以看到小灯成功点亮!
image-20240320171036542.png
我们将HAL_GPIO_WritePin修改为RESET,下载编译,查看一下小灯效果
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);三极管截止,小灯就不亮了。
image-20240320171305836.png
我们可以看到小灯成功关闭。我们就学习到小灯的控制,之后我们下次我们就学习按键控制小灯的翻转。

image-20240320171308214.png
image-20240320152839260.png
收藏 评论0 发布时间:2024-4-23 00:24

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版