"); //-->
printf()函数可以直接向窗口格式化输出,给我们调试程序带来很大的方便,然而在Keil MDK环境下直接使用printf()函数就会陷入软件中断,导致死循环的产生;因而不能进入main()函数。
单步调试程序时会发现程序指针一直在 SWI_Handler B SWI_Handler 打转;
解决方法:
工程选择NXP的LPC21XX器件。
1.首先在Keil安装目录下面ARM——Startup找到Retarget.c文件将其复制到你的工程文件夹下面;并将其加入到工程中;
2. 在Keil安装目录下面ARM——Examples——Hello找到Serial.c文件将其复制到你的工程文件夹下面;并将其加入到工程中;
3.Serial.c代码如下:
/******************************************************************************/
/* SERIAL.C: Low Level Serial Routines */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools. */
/* Copyright (c) 2005-2006 Keil Software. All rights reserved. */
/* This software may only be used under the terms of a valid, current, */
/* end user licence from KEIL for a compatible version of KEIL software */
/* development tools. Nothing else gives you the right to use this software. */
/******************************************************************************/
#include <LPC21xx.H> /* LPC21xx definitions */
#define CR 0x0D
void init_serial (void) { /* Initialize Serial Interface */
PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1 */
U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
U1DLL = 97; /* 9600 Baud Rate @ 15MHz VPB Clock */
U1LCR = 0x03; /* DLAB = 0 */
}
/* implementation of putchar (also used by printf function to output data) */
int sendchar (int ch) { /* Write character to Serial Port */
if (ch == '\n') {
while (!(U1LSR & 0x20));
U1THR = CR; /* output CR */
}
while (!(U1LSR & 0x20));
return (U1THR = ch);
}
int getkey (void) { /* Read character from Serial Port */
while (!(U1LSR & 0x01));
return (U1RBR);
}
4.在头文件中加入#include<stdio.h>。
5.在使用printf函数之前对串口进行初始化;可以直接使用Serial.c中的 init_serial ()函数对串口初始化。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
上海移动携手诺基亚贝尔和高通首次在F1中国大奖赛期间完成基于毫米波的多类型终端直播创新试点
Valve 的下一代 VR 头显工程机规格泄露:高通骁龙 8 Gen 3 芯片
低噪声20MHz宽带放大电路
公司将参展“2006秋季全国高教仪器设备展示会”
供车载设备使用的ESD保护二极管
IBM造出世界上最小的晶体管
国外LMDS发展现状分析
高通骁龙 8s 至尊版芯片曝光:安兔兔跑分逼近 200 万
通快霍廷格电子携前沿等离子体电源解决方案亮相SEMICON China 2025
第四届飞思卡尔智能车北京科技大学激光车(特等奖)
工业通讯网络应用方案_按需解决之道(CAN-bus Ethernet...
视频前置放大器电路
在SoC设计中采用多核和RISC-V架构
Arm的Cortex-R内核加强了对汽车级芯片控制
免费卫星短信背后的高昂成本
通过多种方式改进电梯和自动扶梯设计
OPA606构成的12MHz宽带缓冲器
2002年全球十大主机板厂商排名
iPhone 18首发!苹果A20芯片基于台积电2nm制造:良率远超预期
小米 15 Ultra 手机明日在韩上市,实体店上半年登陆首尔
第四届飞思卡尔智能车 北科天津学院视频资料
在与伪科学的辩论中科学处境不利
第四届飞思卡尔智能车 北科视频资料
公司将参加2006第七届广州国际安防展览会
关于80C51仿真头组件的说明
鸟类漫话——攀禽-杜鹃
第四届飞思卡尔智能车 成都信息工程学院
第四届飞思卡尔智能车 天津科技大学
LM6361构成的用于容性负载的宽带驱动器
极宽带大电流缓冲器