使用KEIL编译后出现一块区域FFFFFFFF DCD 0xFFFFFFFF

[复制链接]
12005|38
 楼主| killer523 发表于 2013-1-12 10:23 | 显示全部楼层 |阅读模式
在汇编窗口但不运行,结果出现了大片区域编译后的内容全是FFFFFFFF DCD 0xFFFFFFFF,执行就会进入memmanage fault 或者hardfault handler
uet_cache 发表于 2013-1-12 10:39 | 显示全部楼层
这种无非就是检查你的程序配置啊,BOOT配置啊,,
一句话,检查。。
 楼主| killer523 发表于 2013-1-12 10:50 | 显示全部楼层
uet_cache 发表于 2013-1-12 10:39
这种无非就是检查你的程序配置啊,BOOT配置啊,,
一句话,检查。。

不是很理解,请问从哪方面检查?boot文件用的是现成的,Stack_Size      EQU     0x00001000
uet_cache 发表于 2013-1-12 10:58 | 显示全部楼层
你是仿真出错是,不是编译出错吧。。
 楼主| killer523 发表于 2013-1-12 11:02 | 显示全部楼层
对,仿真的时候出错了。
 楼主| killer523 发表于 2013-1-12 11:06 | 显示全部楼层
   561: void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
    562: {
    563:   /* Check the parameters */
    564:   assert_param(IS_USART_ALL_PERIPH(USARTx));
    565:   assert_param(IS_USART_DATA(Data));  
    566:      
    567:   /* Transmit Data */
0x0800832E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08008332 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    569: }
    570:  
    571: /**
    572:   * @brief  Returns the most recent received data by the USARTx peripheral.
    573:   * @param USARTx: Select the USART or the UART peripheral.  
    574:   *   This parameter can be one of the following values:
    575:   *   USART1, USART2, USART3, UART4 or UART5.
    576:   * @retval : The received data.
    577:   */
    578: uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
0x08008336 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    584:   return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
0x0800833A FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x0800833E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    600:   USARTx->CR1 |= CR1_SBK_Set;
0x08008342 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08008346 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    601: }
多个函数都被编译成这样了
uet_cache 发表于 2013-1-12 11:06 | 显示全部楼层
你一开始不能进MAIIN?
 楼主| killer523 发表于 2013-1-12 11:06 | 显示全部楼层
   561: void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
    562: {
    563:   /* Check the parameters */
    564:   assert_param(IS_USART_ALL_PERIPH(USARTx));
    565:   assert_param(IS_USART_DATA(Data));  
    566:      
    567:   /* Transmit Data */
0x0800832E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08008332 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    569: }
    570:  
    571: /**
    572:   * @brief  Returns the most recent received data by the USARTx peripheral.
    573:   * @param USARTx: Select the USART or the UART peripheral.  
    574:   *   This parameter can be one of the following values:
    575:   *   USART1, USART2, USART3, UART4 or UART5.
    576:   * @retval : The received data.
    577:   */
    578: uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
0x08008336 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    584:   return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
0x0800833A FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x0800833E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    600:   USARTx->CR1 |= CR1_SBK_Set;
0x08008342 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08008346 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    601: }
多个函数都被编译成这样了
 楼主| killer523 发表于 2013-1-12 11:11 | 显示全部楼层
本帖最后由 killer523 于 2013-1-12 11:14 编辑
uet_cache 发表于 2013-1-12 11:06
你一开始不能进MAIIN?

能进main
运行了几个显示的函数了,而且LCD显示正常,在运行到串口发送的函数时出的错
uet_cache 发表于 2013-1-12 11:14 | 显示全部楼层
你帖着原始代码看看。。
 楼主| killer523 发表于 2013-1-12 11:19 | 显示全部楼层
本帖最后由 killer523 于 2013-1-12 16:01 编辑

                  
                   USART_SendData(USART2, usart_transmit2[0]);
           
}
运行到红色代码出的错
uet_cache 发表于 2013-1-12 11:22 | 显示全部楼层
你红色部分函数的代码呢?一起帖出来。。
 楼主| killer523 发表于 2013-1-12 11:28 | 显示全部楼层
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
   /* Check the parameters */
   assert_param(IS_USART_ALL_PERIPH(USARTx));
   assert_param(IS_USART_DATA(Data));
     
   /* Transmit Data */
   USARTx->DR = (Data & (uint16_t)0x01FF);
}
 楼主| killer523 发表于 2013-1-12 11:28 | 显示全部楼层
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
   /* Check the parameters */
   assert_param(IS_USART_ALL_PERIPH(USARTx));
   assert_param(IS_USART_DATA(Data));
     
   /* Transmit Data */
   USARTx->DR = (Data & (uint16_t)0x01FF);
}
uet_cache 发表于 2013-1-12 11:39 | 显示全部楼层
你芯片型号这些,都选对了?
uet_cache 发表于 2013-1-12 11:40 | 显示全部楼层
看起没什么问题。。
 楼主| killer523 发表于 2013-1-12 11:42 | 显示全部楼层
uet_cache 发表于 2013-1-12 11:39
你芯片型号这些,都选对了?

对了,我核对过,如果我将optimization设为level1则不错这个错误,但是LCD显示到处是黑块
uet_cache 发表于 2013-1-12 11:42 | 显示全部楼层
你可以把前面的屏掉,只做个最简单的串口发送,也不用加延时,,说白了,分段屏蔽程序去找问题
 楼主| killer523 发表于 2013-1-12 11:43 | 显示全部楼层
uet_cache 发表于 2013-1-12 11:40
看起没什么问题。。

谢谢你的耐心回复,我找了很多天,仔细检查了数组的定义,也没发现有什么异常,现在挺头疼
uet_cache 发表于 2013-1-12 11:44 | 显示全部楼层
那就先写个最简单的串口程序,,选通起再说。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

96

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部