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 ...
随机推荐
- Evaluate Division——LeetCode进阶路
原题链接https://leetcode.com/problems/evaluate-division/ 题目描述 Equations are given in the format A / B = ...
- 鸿蒙next 定位开发全场景实践
一.开场白 在智能设备普及的今天,位置服务已成为移动应用的基础设施.无论是外卖配送的实时轨迹追踪.导航应用的路径规划,还是运动健康类App的卡路里计算,精准的位置定位都是用户体验的关键支撑.鸿蒙nex ...
- DA指令通俗理解
DA指令通俗理解 最近在学微机的过程中,学到DA指令时对其底层实现感兴趣,但是搜集了网上的资料并没有讲的很清楚易懂的,遂有此文章,来分享一些我对这个指令的理解. 1.DA指令的作用 DA A这条指令书 ...
- Python基础—初识函数(二)
1.给函数参数增加元信息 写好一个函数,然后想为这个函数的参数增加一些额外的信息,这样的话其他使用者就能清楚的知道这个函数应该怎么使用. 使用函数参数注解是一个很好的办法,它能提示程序员应该怎样正确使 ...
- 【Zookeeper】ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解)
ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解) 一.环境准备(Docker版) 1. 服务器准备(3台节点) # 所有节点执行 sudo apt-get update ...
- springboot的代理模式示例----面向切面编程
1.定义切面类 2.编写切面类 import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMappe ...
- PHP汉字转换拼音的类
1 网络上类似的代码大多只能在gb2312编码下使用,下面这个类同时能在utf-8编码下将汉字转换为拼音,具体的代码和用法如下: 2 <?php 3 function Pinyin($_Stri ...
- 真正的生产力来了!Docker迁移部署两步搞定!
前言 最近遇到了需要部署一套比较复杂的应用场景,刚好这套应用我在其他服务器部署过,为了节省折腾的时间,我打算直接把服务器上已有的搬过去. PS:没想到这个过程比从头开始来耗费时间 好在是把一键迁移的脚 ...
- AI对话机器人续:将AI Bot接入企业微信
大家好,我是Edison. 之前尝试将Coze AI Bot接入到了微信,有朋友问如何接入企业微信,今天有空尝试了下,和你分享一下过程. 整体流程和步骤还是基于chatgpt-on-wechat这个开 ...
- 经验贴!万字总结网卡丢包及ping延迟等网络问题排查思路
引言 在运维过程中,出现网络问题是非常棘手的,当访问某服务出现时通时不通的情况时,我们应该如何排查?是不是网卡配置有问题?是不是内核参数有问题?是多网卡吗?有没有做bond?复杂的网络环境经常搞得人晕 ...