上周分享了基于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. #React中类组件中关于回调函数的一个问题

    在ES6中,类中定义的方法,是放在原型对象的,供实例对象引用. //创建一个Person类 class Person { constructor(name,age) { this.name = nam ...

  2. HashMap之装载因子

          装载因子:load fator,散列表中关键字个数和散列表长度之比.她用于度量所有关键字填充哈希表后饱和的程度.       重哈希:rehash,亦或再散列,当装载因子达到指定阈值时,散 ...

  3. 阿里也出手了!灵码AI IDE问世

    大家好,我是晓凡. 写在前面 各位程序员小伙伴们,是不是还在为写代码头秃?别担心,阿里云带着它的通义灵码 AI IDE 来拯救你啦! 相信不少小伙伴已经在VSCode.JetBrains IDE等主流 ...

  4. 阿里云数据库Inventory Hint技术分析

    秒杀场景是电商系统中最具挑战性的场景之一,其核心痛点在于超高并发请求(百万级甚至千万级QPS) 与 有限库存 之间的矛盾,以及由此引发的 系统崩溃.超卖.不公平 等问题.阿里通过一套精密的架构和算法组 ...

  5. [书籍精读]《响应式Web设计 HTML5和CSS3实战(第二版)》精读笔记分享

    写在前面 书籍介绍:本书主要讲解了如何运用HTML5和CSS3来进行响应式Web设计,使页面的设计与开发根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)来进行相应的响应和调整. 我的简评:响 ...

  6. 一、Linux常用命令(ubuntu/debian)

    1.rename(批量修改文件名) rename 's/屏幕录制 2024-09-06 123248_/aa_/' 屏幕录制\ 2024-09-06\ 123248_*.png 这条命令的含义是: s ...

  7. 新人如何入门学习 STM32?

    作为一个在嵌入式领域摸爬滚打了近10年的老兵,看到这个问题时我的思绪瞬间回到了当年那个懵懂的自己.说实话,2014年那个夏天,24岁的我刚从机械专业毕业却被调剂到了厦门某马的电子部门,第一次听到&qu ...

  8. Python库积累之you-get库:网页视频与资源下载

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ you-get库是一个强大的视频网站下载工具,可以通过音视频网页的url链接直接下载包括视频,图片等媒体内容,从而解决一些网站视 ...

  9. 前端开发系列066-JQuery篇之框架使用准备

    一.jQuery框架和JavaScript加载模式对比 jQuery框架的加载模式 <script> window.onload = function () { console.log(& ...

  10. MySQL与Oracle之间的区别

    这是参考别人然后自己总结的关于两者之间的区别,方便自己记忆 1.首先Oracle数据库是大型数据库,功能很强大,性能也很优越,所以大型的开发项目一般使用的就是Oracle但同时他也是比较昂贵的;而My ...