打印
[STM32F1]

STM32F103 AD 在写完flash后变得不准与无关IO口有关这是怎么回事

[复制链接]
514|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
肥羊|  楼主 | 2019-11-19 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

void Init_Dev(void)
{

   //Rtc_Init();
   Init_key();
   Init_Set();
   InitLight();
   InitAUX();
   InitFan();
   InitDefrost();
   InitComp();
   BuzzInit();
   GN1621_Dev_Init();
   DS1302_IO_Init();
   Ds1302_Init();
   InitDoor();
   uart_init2(9600);
   uart_init1(9600);
   HotKey_Dispy_Init();
   uart_init3(9600);
   Adc_Init();
   SwitchInit();
   CodeText();
   TIM3_Mode_Config();
   InitAlarm();
   


}


TIM3_Mode_Config();代码





//配置成PWM输出
void TIM3_Mode_Config(void)
{
   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//初始化TIM2的时间基数单位
   TIM_OCInitTypeDef  TIM_OCInitStructure;//初始化TIM2的外设
   GPIO_InitTypeDef GPIO_InitStructure;

  /*
   关掉JTAD调式 PA15作为普通IO口
  */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

  //由于PA6是复用的所以要设置一下
  //GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);

  //配置PA16 PWM输出的模式
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  //打开TIM3的时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  //TIM2的时间基数单位设置(如计数终止值:999,从0开始 ;计数方式:向上计数)         
  #if INSIDE_RCC
   TIM_TimeBaseStructure.TIM_Prescaler= (2 - 1); //时钟预分频数,时钟频率=64MHZ/(时钟预分频+1) 之后是8M   
   TIM_TimeBaseStructure.TIM_Period=3200-1; //自动重装载寄存器的值/  10KHZ
  #else
   TIM_TimeBaseStructure.TIM_Prescaler= (9 - 1); //时钟预分频数,时钟频率=72MHZ/(时钟预分频+1) 之后是8M   
   TIM_TimeBaseStructure.TIM_Period=1000-1; //自动重装载寄存器的值/        8KHZ
  #endif
  
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  
  //TIM3的外设的设置
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;        //TIM脉冲宽度调制模式1   
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//这个暂时不知道,stm32固件库里没有搜到。应该是定时器输出声明使能的意思        
  TIM_OCInitStructure.TIM_Pulse = 500;//设置了待装入捕获比较寄存器的脉冲值         
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //TIM输出比较极性高
  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
         
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能或者失能TIMx在CCR1上的预装载寄存器
  TIM_ARRPreloadConfig(TIM3, ENABLE);        //使能TIM2重载寄存器ARR  

  TIM_ClearFlag(TIM3, TIM_FLAG_Update); //清除溢出中断标志
  TIM_Cmd(TIM3, ENABLE);//使能TIM2     

  
}


InitAlarm();
代码



void InitAlarm(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  , ENABLE);

        /*
     关掉JTAD调式 PA15作为普通IO口
        */
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        //GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
       

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_9);


}

使用特权

评论回复
沙发
肥羊|  楼主 | 2019-11-19 17:08 | 只看该作者
把void InitAlarm(void)函数的
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
不用就正常了
或者吧void InitAlarm(void)和void TIM3_Mode_Config(void)的顺序调一下也行
难道AD值和GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);有关吗

还是与flash读写有关
开机不写flashAD值又正常的一些flash就不正常了
但是按上面改一改写又没事
,现在的问题是到达时与写flash有关还是与GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);有关

使用特权

评论回复
板凳
paotangsan| | 2019-12-10 13:48 | 只看该作者
没看明白啥意思

使用特权

评论回复
地板
labasi| | 2019-12-10 13:50 | 只看该作者
是不是误写入哪里了

使用特权

评论回复
5
keaibukelian| | 2019-12-10 13:53 | 只看该作者
恢复出厂时设置再试试看

使用特权

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

本版积分规则

35

主题

271

帖子

1

粉丝