上周分享了基于S32-SDK方法配置uart的方法,本次分享UART底层裸机配置,废话不多数,直接上代码:

1)初始化

void uart1_init(void)
{
/*
* PTC6 uart1_rx
* PTC7 uart1_tx
* */
/*PIN MUX*/
PCC->PCCn[PCC_PORTC_INDEX] |= 1<<30;
PORTC->PCR[6] |= 1<<9;
PORTC->PCR[7] |= 1<<9;
/*uart1 init*/
PCC->PCCn[PCC_LPUART1_INDEX] &= ~(1<<30); /*PCC UART1 CLK disable*/
PCC->PCCn[PCC_LPUART1_INDEX] |= (1<<25); /*PCS=010b,SIRC=8M*/
PCC->PCCn[PCC_LPUART1_INDEX] |= (1<<30); /*PCC UART1 CLK enable*/
/*关闭发送接收使能*/
LPUART1->CTRL &= ~(1<<19);
LPUART1->CTRL &= ~(1<<18);
/*配置串口波特率,clk/(波特率*OSR),OSR默认16*/
LPUART1->BAUD = 0x0f000034; /*8000000/(9600*16)波特率=9600*/
/*发送和接收使能*/
LPUART1->CTRL |= (1<<19)|(1<<18);
LPUART1->CTRL |= (1<<2); /*空闲初始位置从stop开始*/ /*接收中断使能,空闲使能*/
LPUART1->CTRL |= (1<<21)|(1<<20);
/*注册中断*/
S32_NVIC_EnableIRQ(LPUART1_RxTx_IRQn); while( ((LPUART1->CTRL>>19) & 0x1) == 0); }

2)发送和接收

//==========================================================================
//UART1接收中断函数
//==========================================================================
void LPUART1_RxTx_IRQHandler()
{
gpio_reverse(PTe, 23);
LPUART1->STAT &= ~(1<<21);
/*判断是否收到换行符*/
if( ((LPUART1->STAT >> 21) & 0x1) == 1 )
{
if ((buffer[bufferIdx] != '\n') && (bufferIdx != (BUFFER_SIZE - 2U)))
{
buffer[bufferIdx] = LPUART1->DATA & 0x3ff;
/*每接收一字节数据,就将储存位置指向数组的下一位,直到接收到换行符*/
bufferIdx++;
}
}
if( ((LPUART1->STAT >> 20) & 0x1) == 1 )
{
buffer[bufferIdx] = 0U;
bufferIdx = 0;
}
}
//==========================================================================
//UART1发送函数
//==========================================================================
void uart1_send1Byte(uint8_t senddata)
{
while( ((LPUART1->STAT >> 23) & 0x1) == 0);
LPUART1->DATA = senddata;
}
//==========================================================================
//UART1发送函数
//==========================================================================
void uart1_sendNByte(uint8_t *buff, uint16_t len)
{
for(uint16_t i=0;i<len;i++)
{
uart1_send1Byte(buff[i]);
}
}

S32K148-uart(裸机开发)的更多相关文章

  1. Cubieboard2裸机开发之(四)定时器操作

    前言 在Cubieboard2裸机开发之(三)里用到了一个延时函数delay,它的延时时间是不精确的,因此为了能够精确延时,就需要定时器的配合.定时器可以精确延时的一个重要原因是它的计时时钟(或者说频 ...

  2. 【转载】s3c2440裸机开发调试环境(MDK4.6,Jlink v8,mini2440)

    用于arm裸机程序开发的IDE基本有 以下3个:MDK,IAR,还有ADS.具体它们的具体情况在这里我就不多说了,百度一下就明白了.由于之前开发c51,stm32时候都使用了MDK开发环境,而且MDK ...

  3. S3C2416裸机开发系列十六_sd卡驱动实现

    S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子    1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...

  4. S3C2416裸机开发系列19_Fatfs播放录像wav音频文件

    S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩    1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...

  5. ARM裸机开发中内存管理库RT_HEAP的使用

    在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动 ...

  6. ok6410[000] 搭建裸机开发环境

    1.安装交叉工具链arm-linux-gcc-4.3.2 先把这个工具复制到rhat系统中[rhel-server-6.3-i386-dvd.iso] 解压arm-linux-gcc-4.3.2到一个 ...

  7. S3C2440—3.用点亮LED来熟悉裸机开发的详细流程

    文章目录 一.硬件知识 1.LED原理图 2.芯片手册 Ⅰ.找LED原理图 Ⅱ.找对应引脚 Ⅲ.在芯片手册中查找引脚信息 Ⅳ.查看寄存器说明 Ⅴ.配置寄存器 二.S3C2440框架与启动过程 三.要用 ...

  8. S3C2440—2.裸机开发步骤及工具使用

    文章目录 一.裸机开发步骤简介 1.在X86架构的Windows系统中 2.在X86架构的Ubuntu系统中 3.ARM裸机开发 二.soucre insight使用 1.sourec insight ...

  9. 使用GNU工具链进行嵌入式裸机开发

    Embedded-Programming-with-the-GNU-Toolchain Vijay Kumar B. vijaykumar@bravegnu.org 翻译整理:thammer gith ...

  10. iTop4412 裸机开发 LED

    平台:iTop4412 SCP 2G 开发板有两个可控制的LED灯:分别接到引脚:KP_COL0和VDD50_EN KP_COL0就是GPL2_0 VDD50_EN就是GPK1_1 配置GPX_CON ...

随机推荐

  1. Evaluate Division——LeetCode进阶路

    原题链接https://leetcode.com/problems/evaluate-division/ 题目描述 Equations are given in the format A / B = ...

  2. 鸿蒙next 定位开发全场景实践

    一.开场白 在智能设备普及的今天,位置服务已成为移动应用的基础设施.无论是外卖配送的实时轨迹追踪.导航应用的路径规划,还是运动健康类App的卡路里计算,精准的位置定位都是用户体验的关键支撑.鸿蒙nex ...

  3. DA指令通俗理解

    DA指令通俗理解 最近在学微机的过程中,学到DA指令时对其底层实现感兴趣,但是搜集了网上的资料并没有讲的很清楚易懂的,遂有此文章,来分享一些我对这个指令的理解. 1.DA指令的作用 DA A这条指令书 ...

  4. Python基础—初识函数(二)

    1.给函数参数增加元信息 写好一个函数,然后想为这个函数的参数增加一些额外的信息,这样的话其他使用者就能清楚的知道这个函数应该怎么使用. 使用函数参数注解是一个很好的办法,它能提示程序员应该怎样正确使 ...

  5. 【Zookeeper】ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解)

    ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解) 一.环境准备(Docker版) 1. 服务器准备(3台节点) # 所有节点执行 sudo apt-get update ...

  6. springboot的代理模式示例----面向切面编程

    1.定义切面类  2.编写切面类 import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMappe ...

  7. PHP汉字转换拼音的类

    1 网络上类似的代码大多只能在gb2312编码下使用,下面这个类同时能在utf-8编码下将汉字转换为拼音,具体的代码和用法如下: 2 <?php 3 function Pinyin($_Stri ...

  8. 真正的生产力来了!Docker迁移部署两步搞定!

    前言 最近遇到了需要部署一套比较复杂的应用场景,刚好这套应用我在其他服务器部署过,为了节省折腾的时间,我打算直接把服务器上已有的搬过去. PS:没想到这个过程比从头开始来耗费时间 好在是把一键迁移的脚 ...

  9. AI对话机器人续:将AI Bot接入企业微信

    大家好,我是Edison. 之前尝试将Coze AI Bot接入到了微信,有朋友问如何接入企业微信,今天有空尝试了下,和你分享一下过程. 整体流程和步骤还是基于chatgpt-on-wechat这个开 ...

  10. 经验贴!万字总结网卡丢包及ping延迟等网络问题排查思路

    引言 在运维过程中,出现网络问题是非常棘手的,当访问某服务出现时通时不通的情况时,我们应该如何排查?是不是网卡配置有问题?是不是内核参数有问题?是多网卡吗?有没有做bond?复杂的网络环境经常搞得人晕 ...