首页IT科技stm32按键控制led灯程序(MM32开发教程(LED灯))

stm32按键控制led灯程序(MM32开发教程(LED灯))

时间2025-04-29 20:12:00分类IT科技浏览3129
导读:前言 今天将为大家介绍一款性能高体积小的MM32,这款开发板出自百问网团队。他就是灵动的MM32F3273,他体积非常小便于携带。...

前言

今天将为大家介绍一款性能高体积小的MM32          ,这款开发板出自百问网团队          。他就是灵动的MM32F3273               ,他体积非常小便于携带                。

有128KB的SRAM          、512KB的Flash                、而且还支持双TypeC接口     、板载DAP-Link          、支持C语言和python开发     。其他功能以后为大家一 一体验      ,今天我们就先点亮一个LED灯吧          。

一                、MM32介绍和STM32的区别

MM32和STM32都是基于ARM架构下所设计的                。

MM32和STM32的相同点主要是:两者都支持32位处理器;两者都支持多种I/O接口     ,如SPI     、I2C等;两者都支持内部存储器和外部存储器;两者都支持多种外设               ,如ADC     、DAC等     。

本款MM32采用了ARM Cortex-M3的架构           ,主频高达120MHZ     。包含多达 3 个

12 位的 ADC                、2 个比较器          、2 个 16 位通用定时器     、2 个 32 位通用定时器                、2 个 16 位基本定时器和 2 个 16 位高级定时器                。还包含标准的通信接口:2 个 I2C 接口          、3 个 I2S 接口、3 个 SPI 接口                、1 个 USB OTG 全速接口                、1 个 CAN 接口、1 个 SDIO 接口和 8 个UART 接口          。

二          、板载LED灯原理图

板子上的用户LED灯连接到了PA1     ,根据原理图可以知道PA1输出0时LED点亮               ,PA1输出1时LED熄灭     。所以我们需要将PA1设置为输出模式                。

三                、代码编写

假如之前学习过STM32那么这款MM32还是非常容易上手的           ,代码的逻辑都是差不多的,只不过是函数名字有些变化          。

这里我们使用模块化编程:

driver_led.h #ifndef __DRV_LED_H #define __DRV_LED_H #define BOARD_LED_PIN GPIO_PIN_1 #define BOARD_LED_PORT GPIOA #define BOARD_LED_GPIO_CLK_EN() RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOA, true) /*LED初始化函数*/ void Drv_LED_Init(void); #endif

这里和STM32有一些区别的就是:RCC_EnableAHB1Periphs时钟使能函数

这个函数有两个参数:

ahb1_periphs:哪一组引脚

enable:是否使能 void RCC_EnableAHB1Periphs(uint32_t ahb1_periphs, bool enable) { (enable) ? (RCC->AHB1ENR |= ahb1_periphs) : (RCC->AHB1ENR &= ~ahb1_periphs); }

driver_led.c

MM32的引脚初始化流程和STM32都是一样的               ,这里就不多讲解了注释中已经讲解的很明白了。 #include "drv_led.h" #include "mm32f327xx_hal_config.h" void Drv_LED_Init(void) { /* 调用GPIO的HAL库对象结构体声明GPIO对象 */ GPIO_Init_Type gpio_init; /* 使能GPIO的时钟 */ BOARD_LED_GPIO_CLK_EN(); /* 设置GPIO的模式 */ gpio_init.PinMode = GPIO_PinMode_Out_PushPull; gpio_init.Speed = GPIO_Speed_50MHz; /* 选择引脚初始化 */ gpio_init.Pins = BOARD_LED_PIN; GPIO_Init(BOARD_LED_PORT, &gpio_init); }

main.c

MM32没有像STM32里面HAL_Delay一样的延时函数                ,所以这里我们自己实现了一个延时函数,延时函数原理这里就不多做解释了                。

使用GPIO_WriteBit这个函数改变GPIO引脚的状态          ,这里和STM32改变GPIO引脚电平状态函数都是差不多的                。

#include "drv_led.h" #include "mm32f327xx_hal_config.h" static void sw_delay(uint32_t x) { volatile uint32_t i = x; volatile uint32_t j = 100; while(j--) { for(i=0; i<x; i++) { } } } int main(void) { /* 初始化LED */ Drv_LED_Init(); while(1) { /* TDO Your Task */ GPIO_WriteBit(BOARD_LED_PORT, BOARD_LED_PIN, 0); // 点亮LED sw_delay(1000); GPIO_WriteBit(BOARD_LED_PORT, BOARD_LED_PIN, 1);; // 熄灭LED sw_delay(1000); } }

效果见B站:B站效果

总结

MM32是不是很有趣呢大家赶紧跟我一起学起来吧。

声明:本站所有文章                ,如无特殊说明或标注      ,均为本站原创发布          。任何个人或组织          ,在未征得本站同意时               ,禁止复制     、盗用          、采集                、发布本站内容到任何网站     、书籍等各类媒体平台                。如若本站内容侵犯了原著者的合法权益      ,可联系我们进行处理     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vscode为什么下载那么慢(超详细的VSCode下载和安装教程以及解决VSCode下载速度特别慢的问题) 网站在线生成(一键免费生成网页的网站有哪些)