打印

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

[复制链接]
9563|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 | 只看该作者
你是仿真出错是,不是编译出错吧。。

使用特权

评论回复
5
killer523|  楼主 | 2013-1-12 11:02 | 只看该作者
对,仿真的时候出错了。

使用特权

评论回复
6
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: }
多个函数都被编译成这样了

使用特权

评论回复
7
uet_cache| | 2013-1-12 11:06 | 只看该作者
你一开始不能进MAIIN?

使用特权

评论回复
8
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: }
多个函数都被编译成这样了

使用特权

评论回复
9
killer523|  楼主 | 2013-1-12 11:11 | 只看该作者
本帖最后由 killer523 于 2013-1-12 11:14 编辑
uet_cache 发表于 2013-1-12 11:06
你一开始不能进MAIIN?

能进main
运行了几个显示的函数了,而且LCD显示正常,在运行到串口发送的函数时出的错

使用特权

评论回复
10
uet_cache| | 2013-1-12 11:14 | 只看该作者
你帖着原始代码看看。。

使用特权

评论回复
11
killer523|  楼主 | 2013-1-12 11:19 | 只看该作者
本帖最后由 killer523 于 2013-1-12 16:01 编辑

                  
                   USART_SendData(USART2, usart_transmit2[0]);
           
}
运行到红色代码出的错

使用特权

评论回复
12
uet_cache| | 2013-1-12 11:22 | 只看该作者
你红色部分函数的代码呢?一起帖出来。。

使用特权

评论回复
13
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);
}

使用特权

评论回复
14
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);
}

使用特权

评论回复
15
uet_cache| | 2013-1-12 11:39 | 只看该作者
你芯片型号这些,都选对了?

使用特权

评论回复
16
uet_cache| | 2013-1-12 11:40 | 只看该作者
看起没什么问题。。

使用特权

评论回复
17
killer523|  楼主 | 2013-1-12 11:42 | 只看该作者
uet_cache 发表于 2013-1-12 11:39
你芯片型号这些,都选对了?

对了,我核对过,如果我将optimization设为level1则不错这个错误,但是LCD显示到处是黑块

使用特权

评论回复
18
uet_cache| | 2013-1-12 11:42 | 只看该作者
你可以把前面的屏掉,只做个最简单的串口发送,也不用加延时,,说白了,分段屏蔽程序去找问题

使用特权

评论回复
19
killer523|  楼主 | 2013-1-12 11:43 | 只看该作者
uet_cache 发表于 2013-1-12 11:40
看起没什么问题。。

谢谢你的耐心回复,我找了很多天,仔细检查了数组的定义,也没发现有什么异常,现在挺头疼

使用特权

评论回复
20
uet_cache| | 2013-1-12 11:44 | 只看该作者
那就先写个最简单的串口程序,,选通起再说。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

96

帖子

0

粉丝