0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32编程疑难杂症

edager 来源:edager 作者:edager 2024-03-28 23:29 次阅读

最近遇到一个奇怪的问题:

如果用一个程序单独用定时器内中断每隔1s点亮LED,此时LED亮度是正常的,单独的呼吸灯程序LED亮度也正常

后来另外写了一个程序将上面定时器内部中断每隔1s点亮LED的功能跟PWM呼吸灯的程序合并在一起后呼吸灯亮度就变的很暗了,但是呼吸灯是能够正常呼吸的

以上是什么原因导致的?

wKgZomYFjISAZjHtAABaUIIZD3M043.pngwKgZomYFjIWAWLhnAATGfZy2P1c906.png

程序如下:

#include "stm32f10x.h" // Device header
#include "Led.h"
#include "Timer.h"
#include "PWM.h"
#include "Delay.h"
#include "SysTick.h"

uint16_t i;

int main(void)
{
// SysTick_Init(72);
Timer_Init();
LED_Init();
PWM_Init(100,720); //1000Hz
while(1)
{
for(i=0; i<=100; i++)
{
PWM_SetCompare1(i);
PWM_SetCompare2(i);
Delay_ms(10);
}

for(i=0; i<=100; i++)
{
PWM_SetCompare1(100-i);
PWM_SetCompare2(100-i);
Delay_ms(10);
}
}
}

#include "stm32f10x.h" // Device header


void PWM_Init(uint16_t Per, uint16_t Psc)
{
//ÍâÉè²ÎÊý½á¹¹Ìå
GPIO_InitTypeDef GPIO_InitStruct;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;

//ÍâÉèʱÖÓ¿ªÆô
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

//ÖØÓ³ÉäÒý½ÅPA6µ½PC6
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);

//GPIO½á¹¹Ìå²ÎÊýÉèÖÃ
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStruct);

//Ñ¡Ôñʱ»ùµ¥ÔªµÄʱÖÓÔ´
TIM_InternalClockConfig(TIM3);

//¶¨Ê±Æ÷ʱ»ù½á¹¹Ìå²ÎÊýÉèÖÃ
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = Per-1; //ARR Ô¤ÖØ×°ÔØÖµ
TIM_TimeBaseInitStruct.TIM_Prescaler = Psc-1; //PSC Ô¤·ÖƵϵÊý
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseStructInit(&TIM_TimeBaseInitStruct);

//Êä³ö±È½Ï½á¹¹Ìå²ÎÊýÉèÖÃ
TIM_OCStructInit(&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse = 0; //CCR ¼ÆÊýÆ÷
TIM_OC1Init(TIM3, &TIM_OCInitStruct);
TIM_OC2Init(TIM3, &TIM_OCInitStruct);

// TIM_ARRPreloadConfig(TIM3, ENABLE);
// TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

//ʹÄܶ¨Ê±Æ÷
TIM_Cmd(TIM3, ENABLE);

}


//ÉèÖÃCCR,¸Ä±äPWMÕ¼¿Õ±È
void PWM_SetCompare1(uint16_t Compare)
{
TIM_SetCompare1(TIM3, Compare);
}


void PWM_SetCompare2(uint16_t Compare)
{
TIM_SetCompare2(TIM3, Compare);
}

//ÉèÖÃÔ¤·ÖƵֵ,¸Ä±äPWMƵÂÊ
void PWM_Prescaler(uint16_t Prescaler)
{
TIM_PrescalerConfig(TIM3, Prescaler, TIM_PSCReloadMode_Immediate);
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23128

    浏览量

    658275
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5140

    浏览量

    213362
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354706
  • 编程
    +关注

    关注

    88

    文章

    3587

    浏览量

    93580
收藏 人收藏

    评论

    相关推荐

    散有什么影响?散从哪里来?

    说到射频的难点不得不提散,散也是射频被称为“玄学”的来源。散也是学习射频必经的一个难点。本篇文章就来讲一下散。
    的头像 发表于 11-05 09:59 508次阅读
    <b class='flag-5'>杂</b>散有什么影响?<b class='flag-5'>杂</b>散从哪里来?

    DP83TC812疑难解答指南

    电子发烧友网站提供《DP83TC812疑难解答指南.pdf》资料免费下载
    发表于 10-31 10:09 0次下载
    DP83TC812<b class='flag-5'>疑难</b>解答指南

    DP83822 疑难解答指南应用手册

    电子发烧友网站提供《DP83822 疑难解答指南应用手册.pdf》资料免费下载
    发表于 09-09 11:09 0次下载
    DP83822 <b class='flag-5'>疑难</b>解答指南应用手册

    DP83867 疑难解答指南

    电子发烧友网站提供《DP83867 疑难解答指南.pdf》资料免费下载
    发表于 09-09 09:34 0次下载
    DP83867 <b class='flag-5'>疑难</b>解答指南

    DP83826疑难解答指南

    电子发烧友网站提供《DP83826疑难解答指南.pdf》资料免费下载
    发表于 09-06 09:48 0次下载
    DP83826<b class='flag-5'>疑难</b>解答指南

    测试工作中的哎呀,当时怎么没有想到

    呢?但实际情况是,逃逸到线上的缺陷,疑难杂症式的极端异常的问题很少,大部分都不复杂且可以在设计和开发中规避,或者在测试过程中被识别出来。针对此类问题,从测试覆盖度的角度,本文试图解释一下为何会发生这样的事
    的头像 发表于 09-06 09:45 204次阅读
    测试工作中的哎呀,当时怎么没有想到

    stm32单片机用什么软件编程

    STM32单片机是一种广泛应用于嵌入式系统领域的微控制器,具有高性能、低功耗、丰富的外设接口等特点。要对STM32单片机进行编程,需要选择合适的软件工具。 概述 STM32单片机
    的头像 发表于 09-02 10:16 960次阅读

    从技术小白到“中国汽车示波器诊断第一人”

    虹科故事系列08202401本期导读虹科汽车售后事业部负责人陈国飞,虹科高级工程师,拥有16年汽车售后诊断技术经验。他精通示波器诊断和噪音振动检测技术,善于解决汽车诊断的疑难杂症,多次获得主机厂售后
    的头像 发表于 08-30 12:09 834次阅读
    从技术小白到“中国汽车示波器诊断第一人”

    虹科故事 从技术小白到“中国汽车示波器诊断第一人”

    虹科汽车售后事业部负责人陈国飞,虹科高级工程师,拥有16年汽车售后诊断技术经验。他精通示波器诊断和噪音振动检测技术,善于解决汽车诊断的疑难杂症,多次获得主机厂售后部门和修理厂高度好评,同时受到全球
    的头像 发表于 08-13 10:08 324次阅读
    虹科故事 从技术小白到“中国汽车示波器诊断第一人”

    精密空调压缩机“生病了”?5分钟搞定精密空调压缩机疑难杂症#精密空调

    精密空调
    北京汇智天源
    发布于 :2024年06月23日 15:54:02

    高低温交变湿热试验箱的疑难杂症怎么解决

    高低温交变湿热试验箱的是一种复合类试验箱,功能越多,越容易出现问题。比如在转换为高温试验时,温度的变化无法达到预期数值,一般情况下可以通过风循环系统进行排查。例如,温度达到目标数值所用时间较长,需要查看一下挡板是否正常运行;如果温度飙升,那么就是控制器有问题,及时处理,如更换控制仪表等。
    的头像 发表于 05-29 08:33 348次阅读
    高低温交变湿热试验箱的<b class='flag-5'>疑难杂症</b>怎么解决

    STM32疑难杂症之一:Printf的使用

    一、Printf简介Printf是一个标准的C库API,用来打印信息显示的。Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putchar函数。Printf主要做两件事:第一件是将参数字符串以及可变参数进行解析,格式化成一串字符串。第二件事就是将格式化的字符串一个字节一个字节的输出出去(至于以什么样的方式输出那
    的头像 发表于 04-02 08:09 3303次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>疑难杂症</b>之一:Printf的使用

    如何利用lighttools实现散光仿真呢?

    散光:摄像镜头形成物体的实像时, 除了成像光线,还有其他非成像光线在光学系统像面上扩散,这些非成像光线就叫做散光,散光可分为鬼像和光。
    的头像 发表于 03-13 09:22 2228次阅读
    如何利用lighttools实现<b class='flag-5'>杂</b>散光仿真呢?

    光学设计中的散光

    光学系统中的散光示意图(来自网络) 光学设计中的散光是从哪来的?在设计中“散光”概念的诠释和理解对于不同的光学设计者目前并不一致,导致设计者之间的交流受阻,在某种程度上阻碍了
    的头像 发表于 02-22 06:34 399次阅读
    光学设计中的<b class='flag-5'>杂</b>散光

    罗盘为什么会出现Bad Compass Health

    pixhawk飞控疑难杂症解决方案
    发表于 11-27 09:38 0次下载