PWM输出,控制灯亮灭的的小程序,求助

2019-10-16 00:35发布

#include "pwm.h"
void gpio_init()
{
    GPIO_InitTypeDef GPIO_TypeStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能GPIOA
    GPIO_TypeStructure.GPIO_Pin=GPIO_Pin_8;      
    GPIO_TypeStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_TypeStructure.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_TypeStructure);
}
void tim1_init(uint16_t arr, uint16_t psc)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructrue;
    TIM_OCInitTypeDef TIM_OCInitTypeStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);    //使能TIM1
    
    TIM_TimeBaseInitStructrue.TIM_Prescaler=psc;
    TIM_TimeBaseInitStructrue.TIM_Period=arr;
    TIM_TimeBaseInitStructrue.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInitStructrue.TIM_ClockDivision=0;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructrue);
    
    TIM_OCInitTypeStructure.TIM_OCMode=TIM_OCMode_PWM2;   //PWM模式2
    TIM_OCInitTypeStructure.TIM_OutputState=TIM_OutputState_Enable;
    TIM_OCInitTypeStructure.TIM_Pulse=0;
    TIM_OCInitTypeStructure.TIM_OCPolarity=TIM_OCPolarity_High;
    
    TIM_OC1Init(TIM1,&TIM_OCInitTypeStructure); //TIM1的CH1初始化
    TIM_CtrlPWMOutputs(TIM1, ENABLE);
    TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
    TIM_ARRPreloadConfig(TIM1,ENABLE);
    TIM_Cmd(TIM1,ENABLE);
}
#include<stm32f10x.h>
#include "delay.h"
#include "pwm.h"

int main()
{
    uint16_t time=1;
    uint8_t mark=1;
    gpio_init();
    tim1_init(899,0);
    while(1)
    {
        delay_ms(10);
        if(mark)time++;
        else
            time--;
        if(time>300)
            mark=0;
        if(time==0)
            mark=1;
        TIM_SetCompare1(TIM1,time);            
    }
}
灯一直亮,不知道为什么,求助
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
时代将军
1楼-- · 2019-10-16 17:54
回复【7楼】lycreturn:
---------------------------------
从0到300,应该是逐渐亮的。但是现在它一直亮,不知道为什么
lycreturn
2楼-- · 2019-10-16 22:21
 精彩回答 2  元偷偷看……
时代将军
3楼-- · 2019-10-17 04:05
回复【9楼】lycreturn:
---------------------------------
电路是PA8(TIM1_CH1)接LED,我的想要的的结果是从灭逐渐到亮,再逐渐到灭,循环,就是呼吸灯。 但现在的情况是程序烧进去,它一直亮,不知道怎么解决......
Rocks
4楼-- · 2019-10-17 07:16
你系統主頻率用多少啊?
lycreturn
5楼-- · 2019-10-17 07:45
回复【10楼】时代将军:
---------------------------------
我是问你led另一端怎么接的,另一端如果接 一个限流电阻到地,那你就把定时器改为PWM模式1
时代将军
6楼-- · 2019-10-17 10:21
回复【12楼】lycreturn:
---------------------------------
另一端接的是1K的电阻到3.3V...

一周热门 更多>