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 ...
随机推荐
- #React中类组件中关于回调函数的一个问题
在ES6中,类中定义的方法,是放在原型对象的,供实例对象引用. //创建一个Person类 class Person { constructor(name,age) { this.name = nam ...
- HashMap之装载因子
装载因子:load fator,散列表中关键字个数和散列表长度之比.她用于度量所有关键字填充哈希表后饱和的程度. 重哈希:rehash,亦或再散列,当装载因子达到指定阈值时,散 ...
- 阿里也出手了!灵码AI IDE问世
大家好,我是晓凡. 写在前面 各位程序员小伙伴们,是不是还在为写代码头秃?别担心,阿里云带着它的通义灵码 AI IDE 来拯救你啦! 相信不少小伙伴已经在VSCode.JetBrains IDE等主流 ...
- 阿里云数据库Inventory Hint技术分析
秒杀场景是电商系统中最具挑战性的场景之一,其核心痛点在于超高并发请求(百万级甚至千万级QPS) 与 有限库存 之间的矛盾,以及由此引发的 系统崩溃.超卖.不公平 等问题.阿里通过一套精密的架构和算法组 ...
- [书籍精读]《响应式Web设计 HTML5和CSS3实战(第二版)》精读笔记分享
写在前面 书籍介绍:本书主要讲解了如何运用HTML5和CSS3来进行响应式Web设计,使页面的设计与开发根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)来进行相应的响应和调整. 我的简评:响 ...
- 一、Linux常用命令(ubuntu/debian)
1.rename(批量修改文件名) rename 's/屏幕录制 2024-09-06 123248_/aa_/' 屏幕录制\ 2024-09-06\ 123248_*.png 这条命令的含义是: s ...
- 新人如何入门学习 STM32?
作为一个在嵌入式领域摸爬滚打了近10年的老兵,看到这个问题时我的思绪瞬间回到了当年那个懵懂的自己.说实话,2014年那个夏天,24岁的我刚从机械专业毕业却被调剂到了厦门某马的电子部门,第一次听到&qu ...
- Python库积累之you-get库:网页视频与资源下载
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ you-get库是一个强大的视频网站下载工具,可以通过音视频网页的url链接直接下载包括视频,图片等媒体内容,从而解决一些网站视 ...
- 前端开发系列066-JQuery篇之框架使用准备
一.jQuery框架和JavaScript加载模式对比 jQuery框架的加载模式 <script> window.onload = function () { console.log(& ...
- MySQL与Oracle之间的区别
这是参考别人然后自己总结的关于两者之间的区别,方便自己记忆 1.首先Oracle数据库是大型数据库,功能很强大,性能也很优越,所以大型的开发项目一般使用的就是Oracle但同时他也是比较昂贵的;而My ...