S32K148-uart(裸机开发)
上周分享了基于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(裸机开发)的更多相关文章
- Cubieboard2裸机开发之(四)定时器操作
前言 在Cubieboard2裸机开发之(三)里用到了一个延时函数delay,它的延时时间是不精确的,因此为了能够精确延时,就需要定时器的配合.定时器可以精确延时的一个重要原因是它的计时时钟(或者说频 ...
- 【转载】s3c2440裸机开发调试环境(MDK4.6,Jlink v8,mini2440)
用于arm裸机程序开发的IDE基本有 以下3个:MDK,IAR,还有ADS.具体它们的具体情况在这里我就不多说了,百度一下就明白了.由于之前开发c51,stm32时候都使用了MDK开发环境,而且MDK ...
- S3C2416裸机开发系列十六_sd卡驱动实现
S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子 1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...
- S3C2416裸机开发系列19_Fatfs播放录像wav音频文件
S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩 1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...
- ARM裸机开发中内存管理库RT_HEAP的使用
在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动 ...
- ok6410[000] 搭建裸机开发环境
1.安装交叉工具链arm-linux-gcc-4.3.2 先把这个工具复制到rhat系统中[rhel-server-6.3-i386-dvd.iso] 解压arm-linux-gcc-4.3.2到一个 ...
- S3C2440—3.用点亮LED来熟悉裸机开发的详细流程
文章目录 一.硬件知识 1.LED原理图 2.芯片手册 Ⅰ.找LED原理图 Ⅱ.找对应引脚 Ⅲ.在芯片手册中查找引脚信息 Ⅳ.查看寄存器说明 Ⅴ.配置寄存器 二.S3C2440框架与启动过程 三.要用 ...
- S3C2440—2.裸机开发步骤及工具使用
文章目录 一.裸机开发步骤简介 1.在X86架构的Windows系统中 2.在X86架构的Ubuntu系统中 3.ARM裸机开发 二.soucre insight使用 1.sourec insight ...
- 使用GNU工具链进行嵌入式裸机开发
Embedded-Programming-with-the-GNU-Toolchain Vijay Kumar B. vijaykumar@bravegnu.org 翻译整理:thammer gith ...
- iTop4412 裸机开发 LED
平台:iTop4412 SCP 2G 开发板有两个可控制的LED灯:分别接到引脚:KP_COL0和VDD50_EN KP_COL0就是GPL2_0 VDD50_EN就是GPK1_1 配置GPX_CON ...
随机推荐
- 20250528 - Usual 攻击事件: 价差兑换与请君入瓮
背景信息 项目背景 VaultRouter 合约有用特权身份,可以通过 Usd0PP 合约将 USD0++ 以 1:1 的比例兑换成 USD0,随后通过 UniV3 将 USD0 swap 成 sUS ...
- Java集合--LinkedList源码可视化
集合节点保存的都是对象的引用,而非具体值,文中案例仅仅为了方便实现原理的演示. 1. 底层数据结构 LinkedList 基于 双向链表 实现,内部通过 Node<E> 节点相互连接: p ...
- h5 移动端适配方案
h5 移动端适配方案 设定viewport 打开public\index.html,在html\head结点下加入<meta name="viewport" content= ...
- Xshell 详细安装与配置教程:从下载到高效使用
引言:为什么选择Xshell? 在当今云计算和远程办公时代,高效连接Linux服务器已成为开发者和运维人员的必备技能.Xshell作为业界领先的专业SSH客户端,凭借其卓越的性能.丰富的功能和直观的用 ...
- C++ map案例学习总结
公司招聘5个员工,五名员工进入公司之后,需要指派员工在哪个部门工作 人员信息:姓名 年龄 电话 工资 等组成 通过Multimap进行信息的插入 保存 显示 分部门显示员工信息 显示全部员工信息 #i ...
- C# 字符串去掉括号和括号里面的内容
https://blog.csdn.net/zhang0000dehai/article/details/80701341 using System.Text.RegularExpressions; ...
- SQL Server 游标写入数据
https://www.cnblogs.com/wanghonghu/p/4093411.html set identity_insert 表名 ON --允许对自增列Id插入指定数据 insert ...
- 从航旅纵横到东南亚Grab:鸿蒙生态的“星辰大海”,由开发者共绘
周周的手机亮了. 屏幕上弹出了提醒,告诉她,登机的时候到了. 曾经,因为工作太过专注忽略了机场广播错过了登机的周周,对于鸿蒙版航旅纵横最满意的一点,就是它的实况窗提醒功能. 别看只是这样一个小小的设计 ...
- Java开发笔记(一百五十二)Date工具的时间格式
Java开发经常要把当前时间转为字符串,比如"2020-07-08 22:59:48"这样,此时会用到格式化工具SimpleDateFormat,该工具通过下列字符表示不同的时间单 ...
- Codeforces Round #697 (Div. 3) ABCDE 题解
久违的cf服务器爆炸场 A. Odd Divisor 思路:任何一个数都可以写成\(n = k2^m,其中k是一个奇数\),若k=1,那么n就一定是一个2的幂. view code #include& ...