野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22237|回复: 7

仿真ISO板出现问题,求高手解惑

[复制链接]
发表于 2014-4-22 14:17:47 | 显示全部楼层 |阅读模式
这是我写的调试程序,所有的程序都是野火的教程里的程序,但运行到LCD_Init();就死,
不知怎么回事,调试出现这些信息
**jtag Warning:CPU could not be halted
**jtag Warning:CPU could not be halted
不知有没有遇到相同问题的,求指导
int main(void){
    int n =0;
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    //定义GPIOB,推挽输出
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStructure);
    //定义TIM2
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);   
    TIM_TimeBaseStructure.TIM_Period = 500;//TIM->ARR  自动重装载寄存器
   TIM_TimeBaseStructure.TIM_Prescaler = 71;
     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
   TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
    TIM_ClearFlag(TIM2,TIM_FLAG_Update);//clear the flag TIMx->SR bit0(UIF)
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//
    TIM_Cmd(TIM2,ENABLE);//TIMx->CR1 CEN=1;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , DISABLE);//先关闭等待使用
    //设置TIM2中断
   NVIC_PriorityGroupConfi(NVIC_PriorityGroup_0);
   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;//指定响应优先级
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
   
    //设置串口UART1
    //设置UART1_TX, RX io口

  RCC_APB2PeriphClockCmd
                 (RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    //Rx pin input
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    //UART1 mode config
    USART_InitStructure.USART_BaudRate = 115200;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl=
                                      USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART_Init(USART1,&USART_InitStructure);
    USART_Cmd(USART1, ENABLE);
   

    /* TIM2 重新开时钟,开始计时 */
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
    LCD_Init();
    LCD_Clear(0, 0, 240, 320, BACKGROUND);       
    LCD_DispChar(60, 60, 'A', RED);
    LCD_DispStr(10, 10, (uint8_t *)"This is a lcd demo to display ascii", RED);       
    LCD_DispStr(40, 100, (uint8_t *)"count:", RED);
    for(  n=0; n<500000; n++ )
    {
          LCD_DisNum(100, 100, n, RED);
          Lcd_Delay(0xAFFf>>4);
    }
    while(1){
        if(cnt>=1000){
            cnt = 0;
            GPIOB->ODR ^= 1;
            printf("hello world!\n");
        }
    }
}
回复

使用道具 举报

发表于 2014-4-22 15:46:51 | 显示全部楼层
直接使用野火的初始化代码不好吗?都已经封装好了,你还要这样全部拆开来一起初始化,看着都乱,找bug很辛苦的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-22 17:10:51 | 显示全部楼层
子车梨祎 发表于 2014-4-22 15:46
直接使用野火的初始化代码不好吗?都已经封装好了,你还要这样全部拆开来一起初始化,看着都乱,找bug很辛苦 ...

呵,调用的都是库函数,实在找不到什么bug 我用的是keil5
回复 支持 反对

使用道具 举报

发表于 2014-4-22 19:49:47 | 显示全部楼层
hypratrick 发表于 2014-4-22 17:10
呵,调用的都是库函数,实在找不到什么bug 我用的是keil5

跟keil5没有关系,兼容的。
楼主你的lcd_Init函数不要放在串口初始化的后面,会出错的,要先进行lcd初始化。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-23 14:20:00 | 显示全部楼层
祁羽彤 发表于 2014-4-22 19:49
跟keil5没有关系,兼容的。
楼主你的lcd_Init函数不要放在串口初始化的后面,会出错的,要先进行lcd初始 ...

请教下是因为什么原因会出现这样的错误
回复 支持 反对

使用道具 举报

发表于 2014-4-23 14:35:14 | 显示全部楼层
hypratrick 发表于 2014-4-23 14:20
请教下是因为什么原因会出现这样的错误

lcd_Init函数不要放在串口初始化的后面,会出错的,要先进行lcd初始化。不知道是stm32的芯片bug还是固件库的软件bug,必须先初始化lcd再初始化串口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-23 14:38:19 | 显示全部楼层
祁羽彤 发表于 2014-4-23 14:35
lcd_Init函数不要放在串口初始化的后面,会出错的,要先进行lcd初始化。不知道是stm32的芯片bug还是固件库 ...

谢谢,查了好久都不知道原因,困扰了几天,不知您是怎么发现了这个问题的
回复 支持 反对

使用道具 举报

发表于 2014-4-23 15:49:18 | 显示全部楼层
hypratrick 发表于 2014-4-23 14:38
谢谢,查了好久都不知道原因,困扰了几天,不知您是怎么发现了这个问题的

之前我调试也遇到这个问题,来论坛看到大神有说过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 01:40 , Processed in 0.030004 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表