MM32开发教程(LED灯)

简介: MM32开发教程(LED灯)

前言

今天将为大家介绍一款性能高体积小的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设置为输出模式。

image.png

三、代码编写

假如之前学习过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是不是很有趣呢大家赶紧跟我一起学起来吧。

相关文章
|
芯片
最详细STM32,cubeMX 按键点亮 led
最详细STM32,cubeMX 按键点亮 led
192 0
|
1月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
34 4
|
6月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
No.5 STM32F429IGT6 标准库实战GPIO输出LED灯 点亮闪烁(STM32F429/F767/H743)
No.5 STM32F429IGT6 标准库实战GPIO输出LED灯 点亮闪烁(STM32F429/F767/H743)
|
编译器
【51单片机】点亮LED灯(四种形式)
英文名:Light Emitting Diode。 简称:LED。 应用:LED显示屏、交通信号灯、广告灯、液晶屏背光源等。 特点:节能是LED灯最突出的特点、环保、
784 0
【51单片机】点亮LED灯(四种形式)
stm32CubeMX点亮一个LED灯
stm32CubeMX点亮一个LED灯
100 0
|
IDE 开发工具 芯片
ESP32CAM,点亮一个LED(Arduino平台)
ESP32CAM,点亮一个LED(Arduino平台)
426 0
使用STM32CubeMX实现LED闪烁
使用STM32CubeMX实现LED闪烁
206 0
|
存储 IDE 安全
STM32CubeMX开发教程(2)— 使用教程(点亮LED灯)
STM32CubeMX开发教程(2)— 使用教程(点亮LED灯)
767 0
|
C语言 芯片
STM32 实战之点亮LED
STM32 实战之点亮LED