傻傻の、笨蛋ヽ · 2022年08月26日 · 河南

【MM32F5270开发板试用】+基于阿里云的智能时钟----基础外设RTC、UART篇

一、开发板及芯片介绍

PLUS-F5270是基于STAR-MC1 MM32F5270高性能MCU设计的一款多功能开发板,可满足开发者的日常大部分功能验证的需求。
MM32F5270 是一款搭载了安谋科技 Arm China STAR-MC1 内核的 MCU 产品,其工作频率可达 120MHz,内置多达 256KB Flash 和 192KB RAM,配置浮点运算单元(Floating Point Unit, FPU,并集成了丰富的外设模块和充足的 I/O 端口。MM32F5270 相较于现有产品全面提升了性能、存储容量、总线架构和外设配置,旨在覆盖更广泛的工业、汽车和 IoT 应用。

二、下载工具介绍

PowerWriter®是创芯工坊官方推出的集成了调试器(Debugger)+ 烧录工具Programmer)的二合一产品,主要适用于单片机开发和小批量生产使用。PowerWriter®内置近30种安全特性,提供丰富的功能设定,满足开发者从功能开发到小批量量产、从代码验证到安全保护,在不同阶段对应的各类功能需求!

三、MindSDK体验

MindSDK(mm32-mcu-sdk)是由灵动官方的软件团队开发和维护的基于灵动微控制器的软件开发平台。
MindSDK:体验网址如下:网址
使用步骤:
图片.png
1.选择开发的平台
2.选择开发工具(keil,MDK)
3.选择板子或者芯片

四、RTC代码

1.开启RTC时钟
` RCC_EnableAPB1Periphs(RCC_APB1_PERIPH_PWR_DBG, true);

RCC_EnableAPB1Periphs(RCC_APB1_PERIPH_BKP, true);
CLOCK_RTCToLSE();`

`void CLOCK_RTCToLSE()
{

RCC->BDCR |= RCC_BDCR_DBP_MASK;

if (BKP->DR[1] != 0x5052)
{
    /* Reset BKP. */
    RCC->BDCR |= RCC_BDCR_BDRST_MASK;
    RCC->BDCR &= ~RCC_BDCR_BDRST_MASK;


    /* Enable LSE clock source. */
    RCC->BDCR |= RCC_BDCR_RTCSEL(1u);
    RCC->BDCR &= ~RCC_BDCR_LSEON_MASK;
    RCC->BDCR |= RCC_BDCR_LSEON_MASK;

    while (0u == (RCC->BDCR & RCC_BDCR_LSERDY_MASK) )
    {
    }
    RCC->BDCR |= RCC_BDCR_RTCEN_MASK;
    BKP->DR[1] = 0x5052;
}

}`
2.设置RTC初始化
图片.png

五、UART2代码

void UART2_GPIO_Init(void)
{
    RCC_EnableAHB1Periphs(RCC_AHB1_PERIPH_GPIOA,true);
    
    GPIO_Init_Type UART2_GPIO;
    UART2_GPIO.Pins=GPIO_PIN_2;
    UART2_GPIO.PinMode=GPIO_PinMode_AF_PushPull;
    UART2_GPIO.Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&UART2_GPIO);
    GPIO_PinAFConf(GPIOA,UART2_GPIO.Pins,GPIO_AF_7);
    
    UART2_GPIO.Pins=GPIO_PIN_3;
    UART2_GPIO.PinMode=GPIO_PinMode_In_Floating;
    GPIO_Init(GPIOA,&UART2_GPIO);
    GPIO_PinAFConf(GPIOA,UART2_GPIO.Pins,GPIO_AF_7);
    
}

void UART2_Init(void)
{
    RCC_EnableAPB1Periphs(RCC_APB1_PERIPH_UART2,true);
     UART2_GPIO_Init();
   UART_Init_Type UART2_CHUSHI;
    UART2_CHUSHI.ClockFreqHz=CLOCK_APB2_FREQ;
    UART2_CHUSHI.BaudRate=BaudRate2;
    UART2_CHUSHI.StopBits=UART_StopBits_1;
    UART2_CHUSHI.WordLength=UART_WordLength_8b;
    UART2_CHUSHI.Parity=UART_Parity_None;
    UART2_CHUSHI.XferMode= UART_XferMode_RxTx;
    UART2_CHUSHI.HwFlowControl=UART_HwFlowControl_None;
    UART_Init(UART2,&UART2_CHUSHI);
    UART_Enable(UART2,true);
    
}


void UART2_Send_Data(uint8_t c)
{
  while((UART_STATUS_TX_EMPTY & UART_GetStatus(UART2))==0u)
    {
    
    }
    UART_PutData(UART2,c);
}

void Uart2_Send_Str(uint8_t *str)
{
    while((*str) != '\0')
    {
       UART2_Send_Data(*str);
         str++;
    }
}

项目主函数

#include "board_init.h"
#include "hal_gpio.h"
#include "uart2.h"
#include "delay.h"
#include "adc.h"
#include "rtc.h"


extern RTC_Init_Type rtc_init;
extern RTC_Time_Type rtc_time;
/*
 * Macros.
 */

/*
 * Variables.
 */

/*
 * Declerations.
 */

/*
 * Functions.
 */
int main(void)
{
    uint8_t ch;
      uint32_t adcvalue;
    BOARD_Init();
      UART2_Init();
    printf("hello, world\r\n");
      Uart2_Send_Str((uint8_t *)"wanglong"); 
    //Adc_Initialization();    
      app_rtc_init();
    while (1)
    {
            app_rtc_get_current_time();
            uint32_t mm=rtc_time.Secs;
            if (mm==00)
            {
            
            GPIO_SetBits(GPIOI,GPIO_PIN_0);
            delay_ms(500);
        GPIO_ClearBits(GPIOI,GPIO_PIN_0);
            delay_ms(500);
            
            }

    }
}

六、项目整体介绍

项目后面会利用UART,通过AT指令控制Air724 4G模块,通过MQTT连接阿里云,同时后期会加入温湿度传感器,以及语音播报系统

推荐阅读
关注数
6151
内容数
276
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息