2440裸机串口调试 while(!(rUTRSTAT0 & 0x2));问题

前两天写RTC中断 使用串口输出

发现程序会出现while(!(rUTRSTAT0 & 0x2));出不来的情况,但是中断是正常运作的

解决方法:

main函数增加:

        U32 mpll_val = 0,consoleNum;
        Port_Init();   //定义在2440lib.c
        mpll_val = (92<<12)|(1<<4)|(1);
	//init FCLK=400M,
	ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);    (定义在2440lib.c)
	ChangeClockDivider(14, 12);   //the result of rCLKDIVN [0:1:0:1] 3-0 bit  (定义在2440lib.c)
	cal_cpu_bus_clk();            //HCLK=100M   PCLK=50M

        consoleNum = 0;	              // Uart 1 select for debug.
	Uart_Init( 0,115200 );        // 定义在2440lib.c
	Uart_Select( consoleNum );    // 定义在2440lib.c

cal_cpu_bus_clk()定义如下:

static U32 UPLL;
static U32 cpu_freq;
void cal_cpu_bus_clk(void)
{
	U32 val;
	U8 m, p, s;

	val = rMPLLCON;
	m = (val>>12)&0xff;
	p = (val>>4)&0x3f;
	s = val&3;

	//(m+8)*FIN*2 不要超出32位数!
	FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;

	val = rCLKDIVN;
	m = (val>>1)&3;
	p = val&1;
	val = rCAMDIVN;
	s = val>>8;

	switch (m) {
	case 0:
		HCLK = FCLK;
		break;
	case 1:
		HCLK = FCLK>>1;
		break;
	case 2:
		if(s&2)
			HCLK = FCLK>>3;
		else
			HCLK = FCLK>>2;
		break;
	case 3:
		if(s&1)
			HCLK = FCLK/6;
		else
			HCLK = FCLK/3;
		break;
	}

	if(p)
		PCLK = HCLK>>1;
	else
		PCLK = HCLK;

	if(s&0x10)
		cpu_freq = HCLK;
	else
		cpu_freq = FCLK;

	val = rUPLLCON;
	m = (val>>12)&0xff;
	p = (val>>4)&0x3f;
	s = val&3;
	UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
	UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
}

2440裸机串口调试 while(!(rUTRSTAT0 & 0x2));问题,布布扣,bubuko.com

时间: 2024-12-25 01:19:45

2440裸机串口调试 while(!(rUTRSTAT0 & 0x2));问题的相关文章

ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境

ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境 系统:  ubuntu16.04 裸板: 飞凌公司OK6410开发板 目标:搭建基于ubuntu1604系统和基于RAM的裸机程序开发环境 1.安装配置ckermit 在ubuntu1604下一般做裸板开发时都是使用ckermit作为远程通讯终端,下面我们就开始讲解下其安装与配置. 1.1.安装ckermit 在ubuntu系统下安装ckermit,使用 sudo  apt-get  install  ckermi

VELT-0.1.5开发: gdb串口调试内核时信息丢失的问题

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs2013 + velt-0.1.5 VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可

基于Modbus的C#串口调试开发

说明:本文主要研究的是使用C# WinForm开发的串口调试软件(其中包含Modbus协议相关操作).Modbus相关协议可以查阅百度文库等,可参考: <http://wenku.baidu.com/link?url=J-QZeQVLfvfZh7_lh8Qf0MdwANZuVjEoTqox6zJYrSnKyfgES2RTb_bjC5ZTn8-xgsuUAyiELRYVA3-3FBkBGywWhQ9YGoavJOzwB0IxTyK >. (1)先测试串口设置,发送和接收数据. (2)发送modb

keil中的串口调试:

keil中串口的虚拟调试信息在通过View-serial windows-#usart1/2/3/4/debug(printf)可以看到.当然也可以通过虚拟串口VSPD+串口调试助手在外部实现,方法如下: 虚拟 串口使用:步骤 1 下载虚拟串口软件,虚拟2个连接的串口COMA/COMB,这两个串口与PC机的真实物理串口没关系.两边的设置相同 2 打开串口通讯助手,将A分配给串口通讯助手,则B就分配给下面的COMx 2 在MDK中输入命令行或者将下面的做成debug.ini文件加载 MODE CO

[STM32F10x] 使用printf函数进行串口调试问题

硬件:STM32F103C8T6 平台:Keil ARM-MDk V5.11 利用printf函数通过串口(USART)进行调试时遇到的一个问题: printf("Hello, Mini-M3"); 本意是想输出"Hello, Mini-M3",但是通过串口调试助手,得到的输出是"ello, Mini-M3",也就是第一个数据没有接收到,而且这种情况只会在初始化USART后第一次 发送数据时出现. USART发送数据的代码如下: int fput

Linux下使用putty进行UART串口调试【转】

本文转载自:http://blog.csdn.net/xzongyuan/article/details/11593101 版权声明:本文为博主原创文章,未经博主允许不得转载. 使用putty进行串口调试,非常简单.只需要设置好端口(Serial Line),Linux中默认接上串口后,端口为ttyS0,或者ttyUSB0(对应USB转串口),如果再多接一个,就会显示ttyS1或者ttyUSB1:Window中,普通串口对应的是COM1.COM2,USB对应COM3(需要安装驱动,在设备管理器查

android-x86如何开启串口调试

android-x86的grub是采用相对UBuntu古老一些的方式,来grub kernel的 如何开启android-x86的串口调试模式呢,采用如下步骤: (1)mount sda1: mkdir /data/fs mount -t ext2 /dev/block/sda1 /data/fs (2)修改menu.lst文件 这个文件保存grub配置,修改如下: [email protected]:/data/fs/grub # cat menu.lst default=0 timeout=

STM32F407串口调试总结

一.背景 最近项目开发需要用到3路串口,分别为U1,U5,U6,其中U1原子哥的例程已经提供,拿过来就可用,本文主要讲解U5,U6串口调试. 二.正文 1.硬件描述 三个串口分别对应的发送引脚和接收引脚如下表所示: 串口号 接收引脚 发送引脚 USART1 PA9 PA10 UART5 PC12 PD2 USART6 PG14 PG9 2.串口介绍 USART为通用同步异步接收器,能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准NRZ异步穿行数据格式的要求. STM32F407ZG

SylixOS串口调试详解

目录 1. SylixOS串口调试介绍    1 1.1    SylixOS串口的介绍    1 1.2    SylixOS串口调试介绍    1 2. SylixOS串口调试步骤    1 3. 总结    4 4. 参考资料    4 SylixOS串口调试介绍 SylixOS串口的介绍 串口(串行接口)也称也称串行通信接口或串行通讯接口(通常指 COM接口),是采用串行通信方式的扩展接口.串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,