英飞凌TC264学习(四)串口通信UART

英飞凌TC264学习(四)串口通信UART

串口部分的函数在LQ_UART.c中
TC264有四路UART中断,需要中断可以来配置中断,与外部中断一样,中断服务函数,中断号,优先级,不需要中断的话就不用配置,初始化之后就可以使用。

例子:
主函数:

int core0_main (void)
{
    //char txt[16];

	// 关闭CPU总中断
	IfxCpu_disableInterrupts();

	// 关闭看门狗,如果不设置看门狗喂狗需要关闭
	IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
	IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());

	// 读取总线频率
	g_AppCpu0.info.pllFreq = IfxScuCcu_getPllFrequency();
	g_AppCpu0.info.cpuFreq = IfxScuCcu_getCpuFrequency(IfxCpu_getCoreIndex());
	g_AppCpu0.info.sysFreq = IfxScuCcu_getSpbFrequency();
	g_AppCpu0.info.stmFreq = IfxStm_getFrequency(&MODULE_STM0);

	// 按键初始化
	GPIO_KEY_Init();
	// LED灯所用P10.6和P10.5初始化
	GPIO_LED_Init();

	// 串口初始化,串口P14.0管脚输出,P14.1输入,波特率115200
	UART_InitConfig(UART0_RX_P14_1,UART0_TX_P14_0, 115200);

	// 开启CPU总中断
	IfxCpu_enableInterrupts();

	// 通知CPU1,CPU0初始化完成
	IfxCpu_releaseMutex(&mutexCpu0InitIsOk);
	// 切记CPU0,CPU1...不可以同时开启屏幕显示,否则冲突不显示
	mutexCpu0TFTIsOk=0;         // CPU1: 0占用/1释放 TFT

    Test_ADC_7mic();       //PASS,测试ADC\UART0、STM延时和闪灯,通过UART0打印 AN0--AN7共8个通道ADC转换数据

    while (1)	//主循环
    {
        LED_Ctrl(LED0,RVS);        //电平翻转,LED闪烁
        delayms(100);
    }
}

UART初始化函数:

/*************************************************************************
*  函数名称:void UART_InitConfig(UART_RX_t RxPin, UART_TX_t TxPin, unsigned long baudrate)
*  功能说明:串口模块初始化
*  参数说明:
  * @param    RxPin   : 串口接收管脚
  * @param    TxPin   : 串口发送管脚
  * @param    baudrate: 波特率
*  函数返回:字节
*  修改时间:2020年3月10日
*  备    注:UART_InitConfig(UART0_RX_P14_1,UART0_TX_P14_0, 115200);   //初始化串口0 波特率 115200 无奇偶校验 1停止位 使用管脚P14_0 P14_1
*************************************************************************/
void UART_InitConfig(UART_RX_t RxPin, UART_TX_t TxPin, unsigned long baudrate)
{
	//省略。。。
}

测试函数:

/*************************************************************************
*  函数名称:void Test_Beacon7mic(void)
*  功能说明:采集测试6+1麦克风阵列
*  参数说明:无
*  函数返回:无
*  修改时间:2020年3月10日
*  备    注:    ADC悬空不为零
*************************************************************************/
void Test_ADC_7mic(void)
{
    char txt[200];
    unsigned int MICVmin[8];

    ADC_InitConfig(ADC0, 80000); //初始化
    ADC_InitConfig(ADC1, 80000); //初始化
    ADC_InitConfig(ADC2, 80000); //初始化
    ADC_InitConfig(ADC3, 80000); //初始化
    ADC_InitConfig(ADC4, 80000); //初始化
    ADC_InitConfig(ADC5, 80000); //初始化
    ADC_InitConfig(ADC6, 80000); //初始化
    ADC_InitConfig(ADC7, 80000); //初始化   如果使用龙邱母板  则测分压后的电池电压,具体可以看母板原理图
    delayms(500);                //延时等待
	UART_PutStr(UART0,"\n-------------------------------------------------\n");//分界线
	while(1)
	{
		MICVmin[0]=ADC_Read(ADC0);
		MICVmin[1]=ADC_Read(ADC1);
		MICVmin[2]=ADC_Read(ADC2);
		MICVmin[3]=ADC_Read(ADC3);
		MICVmin[4]=ADC_Read(ADC4);
		MICVmin[5]=ADC_Read(ADC5);
		MICVmin[6]=ADC_Read(ADC6);
		MICVmin[7]=ADC_Read(ADC7);

		//转换结果为字符串,串口发送或者屏幕显示
		sprintf(txt,"[0]:%05d  [1]:%05d  [2]:%05d  [3]:%05d  [4]:%05d  [5]:%05d  [6]:%05d  [7]:%05d  \r\n",MICVmin[0],MICVmin[1],MICVmin[2],MICVmin[3],MICVmin[4],MICVmin[5],MICVmin[6],MICVmin[7]);
		//串口发送到上位机
		UART_PutStr(UART0,txt);//AN0--AN7十进制数据输出到上位机
		
    	LED_Ctrl(LED0,RVS);        //电平翻转,LED闪烁
		delayms(500);              //延时等待
	}
}

LQ_UART.c相关函数:

/*************************************************************************
*  函数名称:void UART_PutStr(UART_t  uratn, char *str)
*  功能说明:UART发送字符串函数(遇 NULL 停止发送),使用前请先初始化对应串口
*  参数说明:uratn : UART0 - UART3/ str   : 要打印的字符串地址
*  函数返回:无
*  修改时间:2020年3月10日
*  备    注:UART_PutStr(UART3, "123456789"); //发送9个字节
*************************************************************************/
void UART_PutStr(UART_t  uratn, char *str)
{
   while(*str)
    {
        UART_PutChar(uratn, *str++);
    }
}

/*************************************************************************
*  函数名称:void UART_PutChar(UART_t  uratn, char ch)
*  功能说明:UART发送字节函数,使用前请先初始化对应串口
*  参数说明:uratn : UART0 - UART3/ ch    : 要打印的字符
*  函数返回:无
*  修改时间:2020年3月10日
*  备    注:UART_PutChar(UART0, 'a');  //打印字符a
*************************************************************************/
void UART_PutChar(UART_t  uratn, char ch)
{
	IfxAsclin_Asc_blockingWrite(&g_UartConfig[uratn], ch);
}
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rgb2gray

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值