JiZzJiZZ国产免费A_国产午夜成人AV在线播放_亚洲欧美在线观看一区二区_91久久久久精品无嫩草影院_欧美高清一区二区三区_欧美日韩国产码高清_亚洲精品国产电影_亚洲AV无码专区亚洲AV桃
廣告招募

Keil MDK環(huán)境下使用printf函數(shù)的解決方法

2025年07月15日 08:36:24      來源:江蘇瑞易通電子科技有限公司 >> 進(jìn)入該公司展臺      閱讀量:5

分享:

printf()函數(shù)可以直接向窗口格式化輸出,給我們調(diào)試程序帶來很大的方便,然而在Keil MDK環(huán)境下直接使用printf()函數(shù)就會陷入軟件中斷,導(dǎo)致死循環(huán)的產(chǎn)生;因而不能進(jìn)入main()函數(shù)。

單步調(diào)試程序時(shí)會發(fā)現(xiàn)程序指針一直在 SWI_Handler     B       SWI_Handler 打轉(zhuǎn);

解決方法:

工程選擇NXP的LPC21XX器件。

1.首先在Keil安裝目錄下面ARM——Startup找到Retarget.c文件將其復(fù)制到你的工程文件夾下面;并將其加入到工程中;

2. 在Keil安裝目錄下面ARM——Examples——Hello找到Serial.c文件將其復(fù)制到你的工程文件夾下面;并將其加入到工程中;

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 definitions               */

#define CR     0x0D


void init_serial (void)  {               /* Initialize Serial Interface       */
  PINSEL0 = 0x;                  /* 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。

5.在使用printf函數(shù)之前對串口進(jìn)行初始化;可以直接使用Serial.c中的 init_serial ()函數(shù)對串口初始化。


版權(quán)與免責(zé)聲明:
1.凡本網(wǎng)注明"來源:中美貿(mào)易網(wǎng)"的所有作品,版權(quán)均屬于中美貿(mào)易網(wǎng),轉(zhuǎn)載請必須注明中美貿(mào)易網(wǎng)。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
2.企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
3.本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。 4.如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系。

JiZzJiZZ国产免费A_国产午夜成人AV在线播放_亚洲欧美在线观看一区二区_91久久久久精品无嫩草影院_欧美高清一区二区三区_欧美日韩国产码高清_亚洲精品国产电影_亚洲AV无码专区亚洲AV桃