打印

STM32F103生成方波问题求教

[复制链接]
楼主: lixiaofengntsc
手机看帖
扫描二维码
随时随地手机跟帖
21
zwll| | 2023-8-3 21:45 | 只看该作者 回帖奖励 |倒序浏览
按道理说这个不该有问题的

使用特权

评论回复
22
chuxh| | 2023-8-3 21:49 | 只看该作者
你的逻辑没问题

使用特权

评论回复
23
juventus9554| | 2023-8-3 21:50 | 只看该作者
贴个代码给我们看看

使用特权

评论回复
24
stly| | 2023-8-3 21:52 | 只看该作者
包括定时器的初始化,中断处理函数

使用特权

评论回复
25
llljh| | 2023-8-3 21:53 | 只看该作者
如果可以,直接用定时器的PWM模式输出方波可能会更好一些。

使用特权

评论回复
26
dingy| | 2023-8-3 21:54 | 只看该作者
其他中断影响了

使用特权

评论回复
27
pengf| | 2023-8-3 21:56 | 只看该作者
关闭其他中断就没问题了

使用特权

评论回复
28
renyaq| | 2023-8-3 21:57 | 只看该作者
这个中断里面这条语句执行了,但单片机内部执行翻转还需要时间,等中断退出了,再执行翻转

使用特权

评论回复
29
supernan| | 2023-8-3 21:59 | 只看该作者
恰巧这个中断退出了,下个中断就来了

使用特权

评论回复
30
xxrs| | 2023-8-3 22:01 | 只看该作者
电平翻转这个就不执行了

使用特权

评论回复
31
dengdc| | 2023-8-3 22:02 | 只看该作者
虽然指令执行了,但实际上并没有进行这个操作

使用特权

评论回复
32
heweibig| | 2023-8-3 22:03 | 只看该作者
不确定是不是这样的过程,并且解决方法还没有想好。

使用特权

评论回复
33
wuhany| | 2023-8-3 22:04 | 只看该作者
知道原因就很好解决了,你将定时器的中断优先级设为最高,然后在中断函数中进行IO翻转,翻转之后再清中断。

使用特权

评论回复
34
huangchui| | 2023-8-3 22:06 | 只看该作者
时不时的就少翻转一次,
还是中断处理,

使用特权

评论回复
35
jiajs| | 2023-8-3 22:07 | 只看该作者
这就费解了

使用特权

评论回复
36
zhanghqi| | 2023-8-3 22:10 | 只看该作者
ODR寄存器可能被打断

使用特权

评论回复
37
zhanghqi| | 2023-8-3 22:12 | 只看该作者
用BSRR和BR寄存器操作

使用特权

评论回复
38
zhenykun| | 2023-8-3 22:13 | 只看该作者
这个中断的优先级已经是最高了

使用特权

评论回复
39
wyjie| | 2023-8-3 22:15 | 只看该作者
试试这样
void TIM3_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
        {
    if(CurrentStu == STOP)
    {
        GPIOA->BRR  = (0x0001<<12);//GPIO_ResetBits(GPIOA,GPIO_Pin_12);//GPIOA12 reset
        CurrentStu = RUN;
    }
    else if(CurrentStu == RUN)
    {
        GPIOA->BSRR = (0x0001<<12);  //GPIO_SetBits(GPIOA,GPIO_Pin_12);//GPIOA12 set
        CurrentStu = STOP;
    }
     __nop();__nop();__nop();__nop();__nop();
       TIM_ClearITPendingBit(TIM3,TIM_IT_Update);               
        }

}

使用特权

评论回复
40
jlyuan| | 2023-8-3 22:16 | 只看该作者
有其他中断的干扰

使用特权

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

本版积分规则