最近遇到一个奇怪的问题:
如果用一个程序单独用定时器内中断每隔1s点亮LED,此时LED亮度是正常的,单独的呼吸灯程序LED亮度也正常
后来另外写了一个程序将上面定时器内部中断每隔1s点亮LED的功能跟PWM呼吸灯的程序合并在一起后呼吸灯亮度就变的很暗了,但是呼吸灯是能够正常呼吸的
以上是什么原因导致的?
程序如下:
#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
+关注
关注
242文章
23910浏览量
676835 -
PWM
+关注
关注
116文章
5624浏览量
220402 -
STM32
+关注
关注
2296文章
11039浏览量
366714 -
编程
+关注
关注
88文章
3692浏览量
95538
发布评论请先 登录
工业园区用电管理混乱、损耗高?安科瑞 Acrel3000电能管理系统帮你解决用电过程中的“疑难杂症”

STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册
别让宿舍用电隐患,成为校园安全的“定时炸弹”!安科瑞智慧安全用电云平台帮你解决各种“疑难杂症”

变电所电力运维困境大揭秘!这个电力运维云平台帮你解决所有“疑难杂症”

光伏储能充电桩配合不默契、成本难降?这平台专治新能源用电 “疑难杂症”

管廊里的 “隐形医生”!全维度监测,精准诊断电缆健康 “疑难杂症”

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

stm32单片机用什么软件编程
从技术小白到“中国汽车示波器诊断第一人”

评论