打印
[STM32F1]

不准与无关IO口有关

[复制链接]
1105|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
morrisk|  楼主 | 2021-11-20 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F103 AD 在写完flash后变得不准与无关IO口有关这是怎么回事

使用特权

评论回复
沙发
wyjie| | 2021-11-20 21:23 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
morrisk|  楼主 | 2021-11-20 21:23 | 只看该作者


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();

   





}

使用特权

评论回复
地板
morrisk|  楼主 | 2021-11-20 21:25 | 只看该作者
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     



  

}

使用特权

评论回复
5
morrisk|  楼主 | 2021-11-20 21:27 | 只看该作者

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);





}

使用特权

评论回复
6
morrisk|  楼主 | 2021-11-20 21:29 | 只看该作者
把void InitAlarm(void)函数的
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
不用就正常了

使用特权

评论回复
7
dengdc| | 2021-11-20 21:35 | 只看该作者
或者吧void InitAlarm(void)和void TIM3_Mode_Config(void)的顺序调一下也行

使用特权

评论回复
8
morrisk|  楼主 | 2021-11-20 21:37 | 只看该作者
难道AD值和GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);有关吗

使用特权

评论回复
9
zwll| | 2021-11-20 21:40 | 只看该作者
与flash读写有关

使用特权

评论回复
10
renyaq| | 2021-11-20 21:42 | 只看该作者
开机不写flashAD值又正常的一些flash就不正常了

使用特权

评论回复
11
morrisk|  楼主 | 2021-11-20 21:47 | 只看该作者
但是按上面改一改写又没事

使用特权

评论回复
12
morrisk|  楼主 | 2021-11-20 21:49 | 只看该作者
现在的问题是到达时与写flash有关还是与GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);有关

使用特权

评论回复
13
yinxiangh| | 2021-11-20 21:52 | 只看该作者
是不是误写入哪里了

使用特权

评论回复
14
jlyuan| | 2021-11-20 21:54 | 只看该作者
恢复出厂时设置再试试看

使用特权

评论回复
15
morrisk|  楼主 | 2021-11-20 21:56 | 只看该作者

嗯,那我按大家的说法挨个排查一下,谢谢哈

使用特权

评论回复
16
wiba| | 2021-12-11 10:42 | 只看该作者
不太明白楼主的意思

使用特权

评论回复
17
qcliu| | 2021-12-11 10:46 | 只看该作者
禁止他的使能

使用特权

评论回复
18
tfqi| | 2021-12-11 10:47 | 只看该作者
会不会是本片的flash有问题啊

使用特权

评论回复
19
zljiu| | 2021-12-11 10:48 | 只看该作者
无意中关联到io口了

使用特权

评论回复
20
coshi| | 2021-12-11 10:49 | 只看该作者
是不是不小心复用啊

使用特权

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

本版积分规则

701

主题

6879

帖子

2

粉丝