OpenEdv-开源电子网

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

f4输出脉冲个数,第一个脉冲高电平时间非常长

[复制链接]

2

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-9-20
在线时间
13 小时
发表于 2020-4-2 17:11:16 | 显示全部楼层 |阅读模式
1金钱
我之前发过,可能是图片有误,我也尝试过改占空比,用的是PB4,tim3ch1,复用推挽,还请原子哥帮忙再看看,才开始起步,对于内部的关系还不是很懂,
我设置的是一开始低电平啊TIM3->CCER|=1<<1;    //OC1 低电平有效
贴代码如下
u16 mubiao=0;
u16 dangqian=0;
void TIM3_Int_Init(void)//把输出口和定时器一起设定
{
     
RCC->AHB1ENR|=1<<1;//GPIOB时钟使能
RCC->APB1ENR|=1<<1; //TIM3时钟使能
GPIO_Set(GPIOB,PIN4,GPIO_MODE_AF, 0, GPIO_SPEED_100M, 1);   //设置 pb4 复用输出,推挽,100Mhz,下拉
GPIOB->ODR|=0<<4;    //设置 PB4 输出 0
GPIO_AF_Set(GPIOB,4,2);   //设置 PB4 为 AF2

TIM3->PSC=84-1;   //预分频器,使定时器得到1MHz的计数频率   
TIM3->CCMR1|=6<<4;   //CH1 PWM1 模式     
TIM3->CCMR1|=1<<3;  //CH1 预装载使能      
TIM3->CCER|=1<<0;    //OC1 输出使能   
TIM3->CCER|=1<<1;    //OC1 低电平有效     
TIM3->CR1|=1<<7;    //ARPE 使能
  TIM3->DIER|=1<<0;      //允许更新中断   

TIM3->CNT=0;

MY_NVIC_Init(1,3,TIM3_IRQn,2); //抢占1,子优先级3,组2


}
//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数

void MyTimer3_Startup(u16 num,u16 frequency)//定时器启动
{
mubiao=num;
dangqian=0;
TIM3->ARR=1000000/frequency-1;  //设定重装值
TIM3->CCR1=TIM3->ARR/2;       //CCR1等于重装值一半,是以占空比为50%
TIM3->CCER|=1<<0;    //OC1 输出使能
TIM3->CR1|=1<<0;              //启动定时器TIM3计数
}
//定时器3中断服务程序
void TIM3_IRQHandler(void)
{                  
if(TIM3->SR&0X0001)//溢出中断
{
   dangqian++;
  if(dangqian==mubiao)
  {
   TIM3->CR1&=~(1<<0);//关闭定时器3
  }
  TIM3->SR&=~(1<<0);//清除中断标志位                           
}            
}
//通用定时器3中断初始化
//这里时钟选择为APB1的2倍,而APB1为42M
//arr:自动重装值。
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=定时器工作频率,单位:Mhz
//这里使用的是定时器3!

  
int main(void)
{
delay_init(168);   //延时初始化     
Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
  MY_NVIC_Init(0,2,TIM3_IRQn,2); //抢占1,子优先级3,组2
  TIM3_Int_Init();
MyTimer3_Startup(5,50); //1Mhz 的计数频率,50hz的PWM,20ms,10个
while(1)
{
}
}




最佳答案

查看完整内容[请看2#楼]

我之前试过了这个寄存器,好像不行,改默认设置看的我眼晕,不过谢谢原子哥的回答,非常感谢,间接帮我,让我注意到端口的电平,昨天终于解决了,我用了另外一个一开始低电平的口,放弃了用tim3,用的tim9,对我没啥影响,大家如果有问题可以试试。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-9-20
在线时间
13 小时
 楼主| 发表于 2020-4-2 17:11:17 | 显示全部楼层
我之前试过了这个寄存器,好像不行,改默认设置看的我眼晕,不过谢谢原子哥的回答,非常感谢,间接帮我,让我注意到端口的电平,昨天终于解决了,我用了另外一个一开始低电平的口,放弃了用tim3,用的tim9,对我没啥影响,大家如果有问题可以试试。
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-9-20
在线时间
13 小时
 楼主| 发表于 2020-4-2 18:23:19 | 显示全部楼层
如题
0FA04E899065C9224456D2232CAADE99.png
回复

使用道具 举报

6

主题

412

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2704
金钱
2704
注册时间
2019-8-14
在线时间
414 小时
发表于 2020-4-2 18:39:20 | 显示全部楼层
帮顶~~
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-4-3 00:51:04 | 显示全部楼层
你 那不是第一个脉冲, 是你配置定时器后的默认输出。。。
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-9-20
在线时间
13 小时
 楼主| 发表于 2020-4-3 11:30:22 | 显示全部楼层
正点原子 发表于 2020-4-3 00:51
你 那不是第一个脉冲, 是你配置定时器后的默认输出。。。

那想请教一下用哪个寄存器哪位设置呢,这几天翻了中文手册。。。没看懂,改了ccer,设置为高电平,也不行,是个我不需要的----|_|----效果
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-9-20
在线时间
13 小时
 楼主| 发表于 2020-4-3 11:31:24 | 显示全部楼层
gyhsdf 发表于 2020-4-3 11:30
那想请教一下用哪个寄存器哪位设置呢,这几天翻了中文手册。。。没看懂,改了ccer,设置为高电平,也不行 ...

求原子哥指一盏明灯
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-9-20
在线时间
13 小时
 楼主| 发表于 2020-4-3 12:20:44 | 显示全部楼层
我突然有个疑问,因为我在TIM3里面改了太多的参数,没啥用,想问一下,这个高电平,是不是等我定时器cr1设置开始计数之后,出现的,和里面参数无关了,但是为啥会出现这种情况,我在主函数里面,这个tim初始化是最后的啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-4-4 01:22:41 | 显示全部楼层
gyhsdf 发表于 2020-4-3 11:30
那想请教一下用哪个寄存器哪位设置呢,这几天翻了中文手册。。。没看懂,改了ccer,设置为高电平,也不行 ...

CCxP
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-2 22:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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