E2UART编程(β板实操)task1传输helloworld

文章目录

  • uart1时钟
  • 端口定义
  • UART控制寄存器
  • 波特率设置
  • UART1_SendChar

#include "derivative.h" /* include peripheral declarations */
//UART1初始化函数
void delay() 
{ 
  unsigned int i,j; 
   for(i=0;i<5000;i++)

   { 
     for(j=0;j<100;j++) //嵌套的循环体,延时 
    asm("nop"); 
   } 
}

void UART1_Init()
{
	SIM_SCGC4 |= (1<<11);//使能UART1时钟
	SIM_SCGC5 |= (1<<13);//使能PORTE时钟
	PORTE_PCR0 = 0x0300;//设置PTE0为UART
	PORTE_PCR1 = 0x0300;//设置PTE1为UART
	UART1_C1 = 0;//不使用奇偶校验
	UART1_C2 = (1<<2)+(1<<3);
	UART1_BDH = 0x00;
	UART1_BDL = 0x44;//设置波特率为9600
	
}
//UART1发送字符函数
void UART1_SendChar(unsigned char data)
{
	//检测最高位为1,则继续
	while(!(UART1_S1 & 0x80));
	//写入data
	UART1_D=data;
}
//UART1接收字符函数
unsigned char UART1_GetChar()
{
	//检测第五位为1,则继续
	while(!(UART1_S1 & (1<<5)));
	//读取data
	return UART1_D;
}
int main(void)
{
	int counter = 0;
	UART1_Init();
	for(;;) {	
		
			UART1_SendChar('H');
			UART1_SendChar('e');
			UART1_SendChar('l');
			UART1_SendChar('l');
			UART1_SendChar('o');
			UART1_SendChar('W');
			UART1_SendChar('o');
			UART1_SendChar('r');
			UART1_SendChar('l');
			UART1_SendChar('d');
			UART1_SendChar(13);
			UART1_SendChar(10);
			delay();
			counter++;
	}
	
	return 0;
}

uart1时钟

查看电路图,连接的是uart1,所以找uart1相关

SIM_SCGC4 |= (1<<11);//使能UART1时钟

1第一步找到12章System Integration Module (SIM)
2在system memory map中找到时钟模块
E2UART编程(β板实操)task1传输helloworld_第1张图片

3点进去发现uart1在SIM_SCGC4模块中11,打开时钟
E2UART编程(β板实操)task1传输helloworld_第2张图片

SIM_SCGC5 |= (1<<13);//使能PORTE时钟

打开portE
E2UART编程(β板实操)task1传输helloworld_第3张图片
发现uart1_tx对应PTE0,uart1_RX对应PTE1,
E2UART编程(β板实操)task1传输helloworld_第4张图片

端口定义

PORTE_PCR0 = 0x0300;//设置PTE0为UART
PORTE_PCR1 = 0x0300;//设置PTE1为UART

这里要将PTE0和PTE1定义为UART口,打开11.5Memory map and register definition
E2UART编程(β板实操)task1传输helloworld_第5张图片

在这里插入图片描述
E2UART编程(β板实操)task1传输helloworld_第6张图片
MUX中alternative3对应是uart
E2UART编程(β板实操)task1传输helloworld_第7张图片
找到10.31KL26 Signal Multiplexing and Pin Assignments
在这里插入图片描述

UART控制寄存器

UART1_C1 = 0;//不使用奇偶校验
UART1_C2 = (1<<2)+(1<<3);

打开40章的uart中的uart.memory map
在这里插入图片描述
在这里UART1_C1的PE=0决定不使用奇偶校验

E2UART编程(β板实操)task1传输helloworld_第8张图片
E2UART编程(β板实操)task1传输helloworld_第9张图片
打开传输和发送
E2UART编程(β板实操)task1传输helloworld_第10张图片

波特率设置

UART1_BDH = 0x00;
UART1_BDL = 0x44;//设置波特率为9600

BDH Baud rate high register
BDL Baud rate low register
高低两个各8bit的寄存器,这两个寄存器BDH后5个寄存器和BDL8个寄存器可以组成13比特的二进制数,值从0-8191可以设置。我们要的波特率的值。就是我们的原时钟除这个13比特的值。再除16就是我们的波特率。
我们使用的原时钟是10.485兆,除设定的值,除16就是波特率

UART1_SendChar

while(!(UART1_S1 & 0x80));

E2UART编程(β板实操)task1传输helloworld_第11张图片
对应7
E2UART编程(β板实操)task1传输helloworld_第12张图片

E2UART编程(β板实操)task1传输helloworld_第13张图片
E2UART编程(β板实操)task1传输helloworld_第14张图片

你可能感兴趣的:(arm)