[求助] 急!TM4C129X Development Board , EEPROM用不了,下载不了程序

huangchao   2015-3-30 13:46 楼主
我用的是TI 原装的Tiva™ TM4C129X Development Board, 芯片是tm4c129xnczad
想用ARM里的内置EEPROM存储一些东西,从板子带的例子uart echo改的。
发现调用
SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);
ROM_EEPROMInit();
//ROM_EEPROMProgram(pui32Data, 0x100, sizeof(pui32Data));
//ROM_EEPROMRead(pui32Read, 0x100, sizeof(pui32Read));
根本无法操作EEPROM,而且程序反复出现下列情况:
(1)程序跑飞
1.jpg
(2)如果再重新下载程序,就出现,下载不了程序
2.jpg
具体程序如下
  1. #include <stdint.h>

  2. #include <stdbool.h>

  3. #include "inc/hw_ints.h"

  4. #include "inc/hw_gpio.h"

  5. #include "inc/hw_memmap.h"

  6. #include "inc/hw_types.h"

  7. #include "driverlib/debug.h"

  8. #include "driverlib/gpio.h"

  9. #include "driverlib/interrupt.h"

  10. #include "driverlib/sysctl.h"

  11. #include "driverlib/uart.h"

  12. #include "driverlib/rom.h"

  13. #include "grlib/grlib.h"

  14. #include "drivers/kentec320x240x16_ssd2119.h"

  15. #include "drivers/frame.h"

  16. #include "drivers/pinout.h"

  17. #include "driverlib/eeprom.h"

  18. #include "driverlib/rom.h"

  19. #include "driverlib/pin_map.h"



  20. #ifdef DEBUG

  21. void

  22. __error__(char *pcFilename, uint32_t ui32Line)

  23. {

  24. }

  25. #endif



  26. //*****************************************************************************

  27. //

  28. // The UART interrupt handler.

  29. //

  30. //*****************************************************************************

  31. void

  32. UARTIntHandler(void)

  33. {

  34.     uint32_t ui32Status;



  35.     //

  36.     // Get the interrrupt status.

  37.     //

  38.     ui32Status = ROM_UARTIntStatus(UART0_BASE, true);



  39.     //

  40.     // Clear the asserted interrupts.

  41.     //

  42.     ROM_UARTIntClear(UART0_BASE, ui32Status);



  43.     //

  44.     // Loop while there are characters in the receive FIFO.

  45.     //

  46.     while(ROM_UARTCharsAvail(UART0_BASE))

  47.     {

  48.         //

  49.         // Read the next character from the UART and write it back to the UART.

  50.         //

  51.     unsigned char temp = UARTCharGetNonBlocking(UART0_BASE);

  52.         ROM_UARTCharPutNonBlocking(UART0_BASE,temp);

  53.     }

  54. }



  55. //*****************************************************************************

  56. //

  57. // Send a string to the UART.

  58. //

  59. //*****************************************************************************

  60. void

  61. UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)

  62. {

  63.     //

  64.     // Loop while there are more characters to send.

  65.     //

  66.     while(ui32Count--)

  67.     {

  68.         //

  69.         // Write the next character to the UART.

  70.         //

  71.         ROM_UARTCharPutNonBlocking(UART0_BASE, *pui8Buffer++);

  72.     }

  73. }



  74. //*****************************************************************************

  75. //

  76. // This example demonstrates how to send a string of data to the UART.

  77. //

  78. //*****************************************************************************

  79. int

  80. main(void)

  81. {

  82.     uint32_t ui32SysClock;

  83.     tContext sContext;

  84.     ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |

  85.                                       SYSCTL_OSC_MAIN |

  86.                                       SYSCTL_USE_PLL |

  87.                                       SYSCTL_CFG_VCO_480), 120000000);



  88.     {

  89.         ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

  90.         ROM_GPIOPinConfigure(GPIO_PA0_U0RX);

  91.         ROM_GPIOPinConfigure(GPIO_PA1_U0TX);

  92.         ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

  93.     }

  94.     SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

  95.     SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);

  96.     //

  97.     // Enable processor interrupts.

  98.     //

  99.     IntMasterEnable();



  100.     //

  101.     // Configure the UART for 115,200, 8-N-1 operation.

  102.     //

  103.     ROM_UARTConfigSetExpClk(UART0_BASE, ui32SysClock, 115200,

  104.                             (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |

  105.                              UART_CONFIG_PAR_NONE));

  106.     ROM_IntEnable(INT_UART0);

  107.     //ROM_EEPROMInit();

  108.     ROM_UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);



  109.     //

  110.     // Prompt for text to be entered.

  111.     //

  112.     UARTSend((uint8_t *)"0nter text: ", 12);

  113.      while(1)

  114.     {

  115.     }

  116. }


回复评论 (1)

试试看原厂自带的 EEPROM 例程行不行,检查一下是板子的问题还是程序的问题。不应该下不了程序的,用新版的 MDK 试试。
点赞  2015-3-30 20:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复