Загрузка данных


#include "MDR32F9Qx_config.h"
#include "MDR32Fx.h"
#include "MDR32F9Qx_timer.h"
#include "MDR32F9Qx_rst_clk.h"
#include "MDR32F9Qx_port.h"

TIMER_CntInitTypeDef sTIM_CntInit;
TIMER_ChnInitTypeDef sTIM_ChnInit;
TIMER_ChnOutInitTypeDef sTIM_ChnOutInit;
PORT_InitTypeDef PORT_InitStructure;

uint16_t CCR1_Val = 500;
uint16_t CCR2_Val = 1000;
uint16_t CCR3_Val = 2000;

int main(void)
{
    /* Включение тактирования */
    RST_CLK_PCLKcmd(RST_CLK_PCLK_TIMER1, ENABLE);
    RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE);

    /* Настройка выводов PA1, PA2, PA3, PA4, PA5 под TIMER1 */
    PORT_InitStructure.PORT_Pin   = PORT_Pin_1 | PORT_Pin_2 | PORT_Pin_3 |
                                    PORT_Pin_4 | PORT_Pin_5;
    PORT_InitStructure.PORT_OE    = PORT_OE_OUT;
    PORT_InitStructure.PORT_FUNC  = PORT_FUNC_ALTER;
    PORT_InitStructure.PORT_MODE  = PORT_MODE_DIGITAL;
    PORT_InitStructure.PORT_SPEED = PORT_SPEED_FAST;
    PORT_Init(MDR_PORTA, &PORT_InitStructure);

    /* Настройка TIMER1 */
    sTIM_CntInit.TIMER_Prescaler         = 0;
    sTIM_CntInit.TIMER_Period            = 4000;
    sTIM_CntInit.TIMER_CounterMode       = TIMER_CntMode_ClkFixedDir;
    sTIM_CntInit.TIMER_CounterDirection  = TIMER_CntDir_Up;
    sTIM_CntInit.TIMER_EventSource       = TIMER_EvSrc_None;
    sTIM_CntInit.TIMER_FilterSampling    = TIMER_FDTS_TIMER_CLK_div_1;
    sTIM_CntInit.TIMER_ARR_UpdateMode    = TIMER_ARR_Update_Immediately;
    sTIM_CntInit.TIMER_ETR_FilterConf    = TIMER_Filter_1FF_at_TIMER_CLK;
    sTIM_CntInit.TIMER_ETR_Prescaler     = TIMER_ETR_Prescaler_None;
    sTIM_CntInit.TIMER_ETR_Polarity      = TIMER_ETRPolarity_NonInverted;
    sTIM_CntInit.TIMER_BRK_Polarity      = TIMER_BRKPolarity_NonInverted;

    TIMER_CntInit(MDR_TIMER1, &sTIM_CntInit);

    /* Настройка каналов 1, 2, 3 в режим PWM */
    sTIM_ChnInit.TIMER_CH_Mode       = TIMER_CH_MODE_PWM;
    sTIM_ChnInit.TIMER_CH_REF_Format = TIMER_CH_REF_Format6;

    sTIM_ChnInit.TIMER_CH_Number = TIMER_CHANNEL1;
    TIMER_ChnInit(MDR_TIMER1, &sTIM_ChnInit);

    sTIM_ChnInit.TIMER_CH_Number = TIMER_CHANNEL2;
    TIMER_ChnInit(MDR_TIMER1, &sTIM_ChnInit);

    sTIM_ChnInit.TIMER_CH_Number = TIMER_CHANNEL3;
    TIMER_ChnInit(MDR_TIMER1, &sTIM_ChnInit);

    /* Значения сравнения, задают скважность */
    TIMER_SetChnCompare(MDR_TIMER1, TIMER_CHANNEL1, CCR1_Val);
    TIMER_SetChnCompare(MDR_TIMER1, TIMER_CHANNEL2, CCR2_Val);
    TIMER_SetChnCompare(MDR_TIMER1, TIMER_CHANNEL3, CCR3_Val);

    /* Настройка выходов каналов */
    sTIM_ChnOutInit.TIMER_CH_DirOut_Polarity = TIMER_CHOPolarity_NonInverted;
    sTIM_ChnOutInit.TIMER_CH_DirOut_Source   = TIMER_CH_OutSrc_REF;
    sTIM_ChnOutInit.TIMER_CH_DirOut_Mode     = TIMER_CH_OutMode_Output;

    sTIM_ChnOutInit.TIMER_CH_NegOut_Polarity = TIMER_CHOPolarity_NonInverted;
    sTIM_ChnOutInit.TIMER_CH_NegOut_Source   = TIMER_CH_OutSrc_REF;
    sTIM_ChnOutInit.TIMER_CH_NegOut_Mode     = TIMER_CH_OutMode_Output;

    sTIM_ChnOutInit.TIMER_CH_Number = TIMER_CHANNEL1;
    TIMER_ChnOutInit(MDR_TIMER1, &sTIM_ChnOutInit);

    sTIM_ChnOutInit.TIMER_CH_Number = TIMER_CHANNEL2;
    TIMER_ChnOutInit(MDR_TIMER1, &sTIM_ChnOutInit);

    sTIM_ChnOutInit.TIMER_CH_Number = TIMER_CHANNEL3;
    TIMER_ChnOutInit(MDR_TIMER1, &sTIM_ChnOutInit);

    /* Делитель таймера и запуск */
    TIMER_BRGInit(MDR_TIMER1, TIMER_HCLKdiv1);
    TIMER_Cmd(MDR_TIMER1, ENABLE);

    while (1)
    {
    }
}