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

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


本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:傻傻の、笨蛋ヽ

一、开发板及芯片介绍

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:体验网址如下:网址
使用步骤:

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

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初始化

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

五、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连接阿里云,同时后期会加入温湿度传感器,以及语音播报系统