复旦微FM33LG048芯片使用(4)UART串口的使用

这里使用的是uart0在开发板的右上角位置即PA13,PA14引脚

这里用的usb转ttl模块

TXD -> 开发板的RX

RXD -> 开发板的TX

因为jlink连了vcc和gnd,所以这个VCC和GND可以不连

 

 在mf_config.c文件写入一下函数,官方例程随便找一个工程就有这个文件


void MF_UART0_Init(void)
{
    FL_GPIO_InitTypeDef    GPIO_InitStruct;

    FL_UART_InitTypeDef    UART0_InitStruct;

    GPIO_InitStruct.pin           = FL_GPIO_PIN_13;
    GPIO_InitStruct.mode          = FL_GPIO_MODE_DIGITAL; //数字外设
    GPIO_InitStruct.outputType    = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull          = FL_ENABLE;
    GPIO_InitStruct.remapPin      = FL_DISABLE;
    GPIO_InitStruct.analogSwitch  = FL_DISABLE;
    (void)FL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.pin           = FL_GPIO_PIN_14;
    GPIO_InitStruct.mode          = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType    = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull          = FL_DISABLE;
    GPIO_InitStruct.remapPin      = FL_DISABLE;
    GPIO_InitStruct.analogSwitch  = FL_DISABLE;
    (void)FL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    UART0_InitStruct.clockSrc          = FL_CMU_UART0_CLK_SOURCE_APBCLK;
    UART0_InitStruct.baudRate          = 115200;
    UART0_InitStruct.transferDirection = FL_UART_DIRECTION_TX_RX;
    UART0_InitStruct.dataWidth         = FL_UART_DATA_WIDTH_8B;
    UART0_InitStruct.stopBits          = FL_UART_STOP_BIT_WIDTH_1B;
    UART0_InitStruct.parity            = FL_UART_PARITY_NONE;

    (void)FL_UART_Init(UART0, &UART0_InitStruct);
}

void MF_UART0_Interrupt_Init(void)
{
    FL_UART_ClearFlag_RXBuffFull(UART0);
    FL_UART_EnableIT_RXBuffFull(UART0);

//    FL_UART_ClearFlag_TXShiftBuffEmpty(UART0); //没用到发送中断,注释掉了
//    FL_UART_EnableIT_TXShiftBuffEmpty(UART0);    //没用到发送中断,注释掉了
}

void MF_NVIC_Init(void)
{
    FL_NVIC_ConfigTypeDef    InterruptConfigStruct;

	InterruptConfigStruct.preemptPriority = 0x02;
    FL_NVIC_Init(&InterruptConfigStruct, UART0_IRQn);
	
}

void MF_Config_Init(void)
{
	
	/* Initial UART0 */
    MF_UART0_Init();
    MF_UART0_Interrupt_Init();

    /* Initial NVIC */
    MF_NVIC_Init();
}

记得在main文件调用MF_Config_Init()函数啊

在工程中添加uart.c:

#include "main.h"
#include "uart.h"

uint8_t rx_flag;
uint8_t tmp08;
void UART0_IRQHandler(void)
{
    uint32_t UART0RXBuffFullIT = 0;
    uint32_t UART0RXBuffFullFlag = 0;

    UART0RXBuffFullIT = FL_UART_IsEnabledIT_RXBuffFull(UART0);
    UART0RXBuffFullFlag = FL_UART_IsActiveFlag_RXBuffFull(UART0);

    //接收中断处理
    if((UART0RXBuffFullIT == 0x01UL) && (UART0RXBuffFullFlag == 0x01UL))
    {
        //中断接收
        tmp08 = FL_UART_ReadRXBuff(UART0); //接收中断标志可通过读取rxreg寄存器清除
		rx_flag = 1;    //接收标志置1
    }
}

void UART0_SendChar(u8 ui)
{
	FL_UART_WriteTXBuff(UART0, ui);        //将发送数据写入发送寄存器
	while(FL_SET != FL_UART_IsActiveFlag_TXBuffEmpty(UART0));
}

void UART0_SendNdata(u16 len,u8 *buf)
{
	while(len--)
	{
		UART0_SendChar(*buf);
		buf++;
	}
}


void UART_RxProcessing(void){
	if(rx_flag){    //如果接收到数据
		rx_flag=0;    //置0
		UART0_SendChar(tmp08);    //调用串口发送回去
	}
}



最后在main文件的while循环里调用UART_RxProcessing()函数,串口收到一个字节的就发送回去

FM33G0xx的主要特性如下:  宽电压范围: 1.8~5.5V  工作温度范围: -40℃~+85℃  处理器内核  ARM Cortex-M0+  支持用户/特权模式  支持中断向量表重定向(VTOR)  最高40MHz主频  SWD调试接口  低功耗技术平台  典型运行功耗180uA/MHz  32KHz下LPRUN功耗: 15uA  Sleep模式下带LCD显示: 6uA  DeepSleep模式, RTC走时+24KB RAM保持+CPU内核保持: 1.2uA  RTC Backup模式, RTC走时+512字节备份寄存器, 0.9uA  存储器  128/256KB Flash空间  Flash擦写寿命: >20,000次  Flash数据保存时间: 10年@85℃  用户代码保护  24KB RAM空间  最大支持73个GPIO,最多24个外部引脚中断, 最多8个异步唤醒引脚  丰富的模拟外设  高可靠、可配置BOR电路(支持4级可编程下电复位阈值)  超低功耗PDR电路(支持4级可编程下电复位阈值)  可编程电源监测模块(SVD)  2x低功耗模拟比较器  11-bit低功耗∑-△ADC,最大支持9个外部通道  高精度温度传感器,精度优于+/-2℃  通信接口  UART*6  7816智能卡接口*2  SPI*3,主从模式  I2C*1, 主机400K  7通道外设DMA  可编程CRC校验模块  定时资源  8-bit基本定时器*4  16-bit扩展定时器*4  16-bit通用定时器*1  24-bit Systick*1  16-bit低功耗定时器*1,可在休眠模式下工作  带窗口的CPU看门狗定时器*1  系统看门狗定时器*1  低功耗实时时钟日历(RTCC),带有数字调校功能, 最高调校精度+/-0.06ppm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值