[LKS32 软件]

[ LKS32MC037E开发板评测 ]+定时器点灯

[复制链接]
190|3
手机看帖
扫描二维码
随时随地手机跟帖
比神乐|  楼主 | 2023-1-29 13:06 | 显示全部楼层 |阅读模式
今天捣鼓定时器点灯,用的FG那个腿上的灯。
原理图:
0.jpg


1.jpg

2.jpg
代码:主程序:
#include "lks32mc03x_lib.h"
#include "hardware_init.h"
#include "delay.h"

/*******************************************************************************
º¯ÊýÃû³Æ£º    int main(void)
¹¦ÄÜÃèÊö£º    Ö÷³ÌÐòÈë¿Ú
ÊäÈë²ÎÊý£º    ÎÞ         
Êä³ö²ÎÊý£º    ÎÞ
·µ »Ø Öµ£º    ÎÞ

ÆäËü˵Ã÷£º    ʹÓÃUTIMER1_CH1²¶»ñģʽ£¬²¶»ñdemo°åOC£¨P1.5£©Òý½ÅµÄϽµÑØÐźŲ¢·­×ªLED2
              £¨ P0.9£©µÄµçƽ½øÐÐָʾ£¬²¢»ñÈ¡OCÐźÅϽµÑØʱUTIMER1_CH1²¶»ñÖµ¡£

ÔËÐÐЧ¹û£º    ³ÌÐòÉÕ¼ÁèŸLKS32MC033H6P8×îСϵͳ°å£¬Ê¹ÓÃʾ²¨Æ÷²âÁ¿P1.5ºÍP0.9¿Ú²¨ÐΣ¬
              µ±P1.5Óɸߵçƽ±äΪµÍµçƽʱ£¬P1.5²¶»ñµ½Ï½µÑØÐźţ¬´Ëʱ½øÈ벶»ñÖжϣ¬
                                                         P0.9µçƽ½øÐÐÒ»´Î·­×ª£¬´ËʱʹÓÃDebug¶ÁÈ¡²¶»ñÖµ¡£

ÐÞ¸ÄÈÕÆÚ      °æ±¾ºÅ          ÐÞ¸ÄÈË            ÐÞ¸ÄÄÚÈÝ
-----------------------------------------------------------------------------
2022/4/14     V1.0          HuangMG             ´´½¨
*******************************************************************************/
int main(void)
{
        Hardware_init(); /* Ó²¼þ³õʼ»¯ */
        for (;;)
        {
                //Invers_GPIO(GPIO1 , GPIO_Pin_4);   
                delay_ms(1000);     
        }
}

/************************ (C) COPYRIGHT LINKO SEMICONDUCTOR **********************/
/* ------------------------------END OF FILE------------------------------------ */

初始化程序:
void Hardware_init(void)
{
    __disable_irq();                  /* ¹Ø±ÕÖÐ¶Ï ÖжÏ×Ü¿ª¹Ø */
    SYS_WR_PROTECT = 0x7a83;          /* ¿ªÆôдʹÄÜ*/
    IWDG_DISABLE();                   /* ¹Ø±Õ¶ÀÁ¢¿´ÃŹ·Ê¹ÄÜ*/
    FLASH_CFG |= 0x00080000;          /* FLASH Ԥȡ¼ÓËÙʹÄÜ*/
   
    delay_init(48);                   /* ÑÓʱº¯Êý³õʼ»¯Ê±ÖÓ48MHz*/
    GPIO_init();                      /* GPIO³õʼ»¯ */
    UTimer_init();                    /* UTimer_init³õʼ»¯ */
          delay_us(100);                    /* ÑÓʱµÈ´ýÓ²¼þ³õʼ»¯Îȶ¨ */
    NVIC_EnableIRQ(TIMER1_IRQn);      /* ʹÄÜTIMER1_IRQnÍⲿÖжÏ*/
    NVIC_SetPriority(TIMER1_IRQn, 0); /* TIMER1_IRQnÍⲿÖжÏÓÅÏȼ¶ÉèÖÃΪ0*/
          __enable_irq();                   /* ¿ªÆô×ÜÖÐ¶Ï */
}

void GPIO_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_StructInit(&GPIO_InitStruct);
    /* P0.9 LED2*/
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; /*Êä³öģʽ*/
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;     /*Pin9*/
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;  /*ÉÏÀ­¹¦ÄÜ*/
    GPIO_Init(GPIO1, &GPIO_InitStruct);


}

void UTimer_init(void)
{
   TIM_TimerInitTypeDef TIM_InitStruct;
    TIM_TimerStrutInit(&TIM_InitStruct); /* Timer½á¹¹Ìå±äÁ¿³õʼ»¯ */

   
                 
          TIM_InitStruct.CLK_DIV = TIM_Clk_Div1;      /* ÉèÖÃTimerÄ£¿éÊý¾Ý·ÖƵϵÊý */
    TIM_InitStruct.CH1_MODE = TIMER_OPMode_CAP; /* ÉèÖÃTimer CH0Ϊ²¶»ñģʽ*/
    TIM_InitStruct.CH1_FE_CAP_EN = ENABLE;      /* ʹÄÜTimerͨµÀ0ϽµÑز¶»ñ*/
    TIM_InitStruct.CH1_RE_CAP_EN = DISABLE;     /* ¹Ø±ÕTimerͨµÀ0ÉÏÉýÑز¶»ñ*/
    TIM_InitStruct.SRC1 = TIM_SRC1_1;           /* ²¶»ñģʽͨµÀ1ÐźÅÀ´Ô´ÓÚTimerͨµÀ1µÄÊäÈëÐźÅ*/
    TIM_InitStruct.CAP1_CLR_EN = ENABLE;        /* µ±·¢ÉúCAP1²¶»ñʼþʱ£¬ÇåÁãTimer¼ÆÊýÆ÷*/
    TIM_InitStruct.TH = 48000;                  /* ÉèÖüÆÊýÆ÷¼ÆÊýÄ£Öµ */
    TIM_InitStruct.FLT = 10;                    /* ͨµÀ 0/1 ÐźÅÂ˲¨¿í¶ÈÑ¡Ôñ£¬0-255 */
   
    TIM_InitStruct.IE = TIM_IRQ_IE_ZC;         /* ʹÄÜTimerÄ£¿éCH0²¶»ñÖÐ¶Ï */
    TIM_TimerInit(TIMER1, &TIM_InitStruct);
          TIM_TimerCmd(TIMER1,ENABLE);                /* Ä£¿éʹÄÜ */
}


中断函数:
s16 Cnt = 0;
TIM_TimerInitTypeDef TIM_InitStruct;
void TIMER1_IRQHandler(void)
{
        if (TIM_GetIRQFlag(TIMER1,TIM_IRQ_IF_ZC))      //ÅжÏUTimer1µÄCH1ÊÇ·ñ·¢Éú²¶»ñÖжÏ
        {
                TIM_ClearIRQFlag(TIMER1,TIM_IRQ_IF_ZC);      //Çå³ýUTimer1ͨµÀ1²¶»ñÖжϱê־λ
                if(Cnt>=1000)
                {
                        Cnt=0;
                        Invers_GPIO(GPIO1 , GPIO_Pin_4);              /*LED2µçƽ·­×ª*/
                }
                Cnt++;
                //Invers_GPIO(GPIO1 , GPIO_Pin_4);              /*LED2µçƽ·­×ª*/
                //Utimer_Cmp_Value = TIM_Timer_GetCMPT1(TIMER1);/*»ñÈ¡²¶»ñʱ¼ÆÊýÆ÷¼ÆÊýÖµ*/
                TIM_InitStruct.TH = 48000;
        }
}
效果图:
3.jpg 4.jpg

使用特权

评论回复
tpgf| | 2023-2-23 14:10 | 显示全部楼层
我有一个想法 可以用da来点灯吗 控制灯 的亮度

使用特权

评论回复
wakayi| | 2023-2-23 15:53 | 显示全部楼层
tpgf 发表于 2023-2-23 14:10
我有一个想法 可以用da来点灯吗 控制灯 的亮度

我觉得这个想法是不切合实际的 因为da本身并没有什么带载能力

使用特权

评论回复
heimaojingzhang| | 2023-2-23 18:59 | 显示全部楼层
时间间隔不长的话 可以考虑用延时函数吗

使用特权

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

本版积分规则

337

主题

3057

帖子

7

粉丝