OpenEdv-开源电子网

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

为什么同样是TIM1 复用IO就能输出PWM 不复用就不行???

[复制链接]

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
发表于 2016-7-11 14:36:50 | 显示全部楼层 |阅读模式
1金钱
void TIM1_PWM_Init(void)//有复用
{                              
    //此部分需手动修改IO口设置
    RCC->APB2ENR|=1<<11;     //TIM1时钟使能   
    RCC->APB2ENR|=1<<6;    //使能PORTE时钟   
   
    GPIOE->CRH&=0XFF0F0F0F;    //PE9、PE11、PE13输出
    GPIOE->CRH|=0X00B0B0B0;    //复用功能输出     

    GPIOE->ODR|=0X0000;    //输出1
   
    RCC ->APB2ENR|=1<<0;
    AFIO->MAPR&=0XFFFFFF3F;
    AFIO->MAPR|=3<<6;      

    TIM1->ARR=999;
    TIM1->PSC=0;
   
    TIM1->CCMR1|=6<<4;    //CH1 PWM1模式
    TIM1->CCMR1|=1<<3;    //CH1预装载使能
    TIM1->CCMR1|=6<<12;      //CH2 PWM1模式
    TIM1->CCMR1|=1<<11;     //CH2预装载使能   
    TIM1->CCMR2|=6<<4;    //CH3 PWM1模式
    TIM1->CCMR2|=1<<3;    //CH3预装载使能   


   
  TIM1->CCER|=1<<0;       //OC1 输出使能
  TIM1->CCER|=1<<4;       //OC2 输出使能   
  TIM1->CCER|=1<<8;       //OC3 输出使能
    TIM1->CR1=0x0080;
    TIM1->CR1|=0x01;        //使能定时器1
  TIM1->BDTR|=0x8000;     
   
}

——————————————————————————————————————————————————————————————————————————————————————————————
void TIM1_PWM_Init(void) //没复用
{                              
    //此部分需手动修改IO口设置
    RCC->APB2ENR|=1<<11;     //TIM1时钟使能   
    RCC->APB2ENR|=1<<2;        //使能PORTA时钟   
    RCC->APB2ENR|=1<<3;

    GPIOA->CRH&=0XFFFFF000;    //PA8、PA9、PA10输出 9\11\13
    GPIOA->CRH|=0X00000BBB;    //复用功能输出
      

    TIM1->ARR=9999;
    TIM1->PSC=0;
   
    TIM1->CCMR1|=6<<4;    //CH1 PWM1模式
    TIM1->CCMR1|=1<<3;    //CH1预装载使能
    TIM1->CCMR1|=6<<12;      //CH2 PWM1模式
    TIM1->CCMR1|=1<<11;     //CH2预装载使能   
    TIM1->CCMR2|=6<<4;    //CH3 PWM1模式
    TIM1->CCMR2|=1<<3;    //CH3预装载使能   

   
  TIM1->CCER|=1<<0;       //OC1 输出使能
  TIM1->CCER|=1<<4;       //OC2 输出使能   
  TIM1->CCER|=1<<8;       //OC3 输出使能
    TIM1->CR1=0x0080;
    TIM1->CR1|=0x01;        //使能定时器1
  TIM1->BDTR|=0x8000;     
   
}

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

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11548
金钱
11548
注册时间
2014-4-1
在线时间
1316 小时
发表于 2016-7-11 14:39:40 | 显示全部楼层

这事理所当然吧?!

多个功能接同一个管脚,
设置复用,就是选择自己需要的功能。


回复

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
 楼主| 发表于 2016-7-11 14:43:13 | 显示全部楼层
xuande 发表于 2016-7-11 14:39
这事理所当然吧?!

多个功能接同一个管脚,

说错了  是重映射

TIM1 我查芯片手册 就是PA8/9/10输出  但是我用MDK仿真不出波形
然后重映射到PE 9/11/13就可以  为什么呢?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11548
金钱
11548
注册时间
2014-4-1
在线时间
1316 小时
发表于 2016-7-11 14:46:04 | 显示全部楼层

首先确定PA8/9/10到底有没有TIM1的功能,
如果有,程序问题的可能性大。


回复

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
 楼主| 发表于 2016-7-11 14:51:35 | 显示全部楼层
xuande 发表于 2016-7-11 14:46
首先确定PA8/9/10到底有没有TIM1的功能,
如果有,程序问题的可能性大。

QQ截图20160711144955.jpg 我现在TIM1有重映射和没重映射都能有输出波形  但是再换成TIM8就有没有了

TIM8的设置和TIM1的一模一样
回复

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
 楼主| 发表于 2016-7-11 15:03:16 | 显示全部楼层
xuande 发表于 2016-7-11 14:46
首先确定PA8/9/10到底有没有TIM1的功能,
如果有,程序问题的可能性大。

上面是TIM1三路输出
下面是TIM8 三路   
这到底怎么回事

QQ截图20160711150125.jpg
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 18:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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