|
|
前往: |
| 关于PWM的小问题(菜鸟发帖求拯救) |
| 发表人 | 内容 | |
|---|---|---|
| 2011/11/25 20:28 |
|
|
|
[楼主位] 城南小卒
等级:
注册时间:![]() 2011/10/21 17:13 文章: 18 离线 |
原子哥的STM32不完全手册看到了PWM输出实验,例程中是通过把PA8作为浮空与PWM的输出端PA7短接,而我现在想用TIM3_CH1对应的PA6来输出PWM通过杜邦线短接,驱动PD2的LED1,但按照例程中的设置改了之后LED1不亮,只有LED0正常显示,不知道出了什么问题, 本人菜鸟,求拯救 if(led0pwmval >300) |
|
|
||
| 2011/11/25 20:46 |
|
|
|
[1楼] 正点原子
等级:
注册时间:![]() 2010/12/02 10:41 文章: 8097 来自: 湖南 在线 |
你用软件仿真看看寄存器的情况.时钟开启了么?
复用时钟使能了么? |
|
|
我的淘宝小店:http://shop62103354.taobao.com |
||
|
||
| 2011/11/25 21:50 |
|
|
|
[2楼] 城南小卒
等级:
注册时间:![]() 2011/10/21 17:13 文章: 18 离线 |
回复【1楼】 正点原子 :
--------------------------------- 这是整个PWM_Init函数,我一般是不贴程序的,但这个实在让人纠结不已,所以还请您受累麻烦看看,其实基本没怎么变,那些时钟开启我用的就是例程原有的句子,翻了参考手册,关于TIM3的时钟设置可以在不修改的情况下直接用,一个是用TIM3_CH1一个是用TIM3_CH2都在TIM3里而且用一个TIMx_CCMR1就能设置,关于main中主要的while循环就贴在楼顶,基本也没怎么变 void PWM_Init(u16 arr, u16 psc) { //此部分需手动修改IO口设置 RCC->APB1ENR |= 1<<1; //TIM3时钟使能 GPIOA->CRH &= 0XFFFFFFF0; //PA8输出 GPIOA->CRH |= 0X00000004; //浮空输入 GPIOA->CRL &= 0X0FFFFFFF; //PA7输出 GPIOA->CRL |= 0XB0000000; //复用功能输出 GPIOA->ODR |= 1<<7; //上拉 GPIOD->CRL &= 0XFFFFF0FF; //PD2输出 GPIOD->CRL |= 0X00000400; //浮空输入 GPIOA->CRL &= 0XF0FFFFFF; //PA6输出 GPIOA->CRL |= 0X0B000000; //复用功能输出 GPIOA->ODR |= 1<<6; //上拉 TIM3->ARR = arr; //设定计数器自动重装值 TIM3->PSC = psc; //预分频器不分频 TIM3->CCMR1 |= 7<<12; //CH2 PWM2模式 TIM3->CCMR1 |= 1<<11; //CH2预装载使能 TIM3->CCER |= 1<<4; //OC2输出使能 TIM3->CCMR1 |= 7<<4; //CH1 PWM2模式 TIM3->CCMR1 |= 1<<3; //CH1预装载使能 TIM3->CCER |= 1<<0; //OC1输出使能 TIM3->CR1 = 0X8000; //ARPE使能 TIM3->CR1 = 0X01; //使能定时器3 } |
|
|
||
| 2011/11/26 00:33 |
|
|
|
[3楼] 正点原子
等级:
注册时间:![]() 2010/12/02 10:41 文章: 8097 来自: 湖南 在线 |
回复【2楼】 城南小卒 :
--------------------------------- 你的程序我仿真是OK的哦 实际测试也是正常的. 不过我是接在PA8上. |
|
|
我的淘宝小店:http://shop62103354.taobao.com |
||
|
||
| 2012/02/18 16:50 |
|
|
|
[4楼] bravejt
等级:
注册时间:![]() 2011/08/15 17:07 文章: 33 离线 |
按楼主的程序测试没什么问题
|
|
|
||
| 2012/03/05 20:04 |
|
|
|
[5楼] sillyboyhe
等级:
注册时间:![]() 2012/03/05 19:51 文章: 4 离线 |
m
|
|
|
||
|
|
||
|
| 前往: |