OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2347|回复: 3

PWM输出例程 输出IO口为什么要初始化两次?

[复制链接]

5

主题

12

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-10-31
在线时间
14 小时
发表于 2017-11-1 00:19:42 | 显示全部楼层 |阅读模式
10金钱
led输入tim1的pwm做呼吸灯的,我把led里的io口初始化删掉了,tim1通道1初始化的函数还在,然后tim1通道1出的就是杂波了。我想既然是设置复用了,那原来的功能(普通io)应该可以不用了吧,为什么还要再初始化led?想了很久没明白。(工程里我加了一点捕获和oled)




这是在led.c里
void LED_Init(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;
  
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);  //ʹÄ&UumlA,PD¶Ë¿ÚʱÖÓ

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;     //LED0-->A.8 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);      //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
GPIO_SetBits(GPIOA,GPIO_Pin_8);       //PA.8 Êä³ö¸ß

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;        //LED1-->D.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_Init(GPIOD, &GPIO_InitStructure);        //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
GPIO_SetBits(GPIOD,GPIO_Pin_2);        //PD.2 Êä³ö¸ß
}




这是在tim1 init里。
void TIM1_PWM_Init(u16 arr,u16 psc)
{  
  GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);  //ʹÄÜGPIOÍâÉèʱÖÓʹÄÜ
                                                                       
   //ÉèÖøÃÒý½ÅΪ¸´ÓÃÊä³ö¹¦ÄÜ,Êä³öTIM1 CH1µ&AumlWMÂö³å²¨ÐÎ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //¸´ÓÃÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);


TIM_TimeBaseStructure.TIM_Period = arr; //ÉèÖÃÔÚÏÂÒ»¸ö¸üÐÂʼþ×°Èë»î¶¯µÄ×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ  80K
TIM_TimeBaseStructure.TIM_Prescaler =psc; //ÉèÖÃÓÃÀ´×÷ΪTIMxʱÖÓÆµÂʳýÊýµÄÔ¤·ÖƵֵ  ²»·ÖƵ
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIMÏòÉϼÆÊýģʽ
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //¸ù¾ÝTIM_TimeBaseInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯TIMxµÄʱ¼ä»ùÊýµ¥Î»

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //Ñ¡Ôñ¶¨Ê±Æ÷ģʽ:TIMÂö³å¿í¶Èµ÷ÖÆÄ£Ê½2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ
TIM_OCInitStructure.TIM_Pulse = 0; //ÉèÖôý×°Èë²¶»ñ±È½Ï¼Ä´æÆ÷µÄÂö³åÖµ
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //Êä³ö¼«ÐÔ:TIMÊä³ö±È½Ï¼«ÐÔ¸ß
TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //¸ù¾ÝTIM_OCInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIMx
  TIM_CtrlPWMOutputs(TIM1,ENABLE); //MOE Ö÷Êä³öʹÄÜ
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //CH1Ô¤×°ÔØÊ¹ÄÜ  

TIM_ARRPreloadConfig(TIM1, ENABLE); //ʹÄÜTIMxÔÚARRÉϵÄÔ¤×°ÔØ¼Ä´æÆ÷

TIM_Cmd(TIM1, ENABLE);  //ʹÄÜTIM1

}




这是在主函数里
int main(void)
{
  
u32 temp=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2
delay_init();       //ÑÓʱº¯Êý³õʼ»¯
uart_init(9600);     //9600  
OLED_Init();   //³õʼ»¯OLED  
OLED_Clear();
//LED_Init();     //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
  TIM3_PWM_Init(899,0);
  //TIM2_Cap_Init(0XFFFF,72-1);  //ÒÔ1MhzµÄƵÂʼÆÊý
    while(1)
{
//   delay_ms(10);
  TIM_SetCompare1(TIM3,499);   
//  if(TIM2CH1_CAPTURE_STA&0X80)//³É¹¦²¶»ñµ½ÁËÒ»´Î¸ßµçƽ
//  {
//   temp=TIM2CH1_CAPTURE_STA&0X3F;
//   temp*=65536;     //Òç³öʱ¼ä×ܺÍ
//   temp+=TIM2CH1_CAPTURE_VAL;  //µÃµ½×ÜµÄ¸ßµçÆ½Ê±¼ä
//   printf("HIGH:%d us\r\n",temp); //´òÓ¡×ÜµÄ¸ßµãÆ½Ê±¼ä
//    TIM2CH1_CAPTURE_STA=0;   //¿ªÆôÏÂÒ»´Î²¶»ñ
//   }
//  OLED_ShowNum(40,5,65,3,16);
}
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

12

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-10-31
在线时间
14 小时
 楼主| 发表于 2017-11-1 08:28:40 来自手机 | 显示全部楼层
简单的说就是io口设置复用初始化后除杂波,必须要和例程一样初始化led才能输出pwm
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-2 01:28:00 | 显示全部楼层
不存在这个问题才对哦。
回复

使用道具 举报

4

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2017-7-28
在线时间
139 小时
发表于 2017-11-2 08:35:56 | 显示全部楼层
......................
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 15:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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