打印
[国产单片机]

【东软载波ES32F369LT+开箱测评】

[复制链接]
360|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhouminjie 于 2021-1-26 23:15 编辑

第一次在二姨家申请板子,本以为是陪申请的,没想到中了,非常幸运,同时感谢东软送了精美台历,祝东软的出货量年年大幅递增
话不多说,先上照
板载资源还是比较丰富的,I/O口在TB两层分别提供了不同形式的插座,便于其他外设资源的连接

1、先上电测试,用ES-Link II mini连接电脑供电,板上除了VDDLED5点亮外,调节变阻器拨动遥感按键也没有其他现象出现

2、下载demo资料,开始点灯
开发板原理图显示两个LED分别接到PF0、PF1


参考ES32_SDK_V1.09\Projects\ES32F36xx\Discovery\00_led例程
将例程中LED对应的GPIO口改为PF0、PF1

配置定时器GP32C4T0定时100us中断一次,在回调函数中实现呼吸灯功能
主函数及回调函数代码如下:
int main()
{
        /* Initialize ALD */
        ald_cmu_init();
        /* Configure system clock */
        ald_cmu_pll1_config(CMU_PLL1_INPUT_HRC_6, CMU_PLL1_OUTPUT_72M);
        ald_cmu_clock_config(CMU_CLOCK_PLL1, 72000000);
        ald_cmu_perh_clock_config(CMU_PERH_ALL, ENABLE);
        /* led init */
        bsp_led_init();
        
        /* Initialize GP16C4T0 */
        h_tim.perh = GP16C4T0;
        h_tim.init.prescaler    = 71;
        h_tim.init.mode         = TIMER_CNT_MODE_UP;
        h_tim.init.period       = 99;//100us
        h_tim.init.clk_div      = TIMER_CLOCK_DIV1;
        h_tim.init.re_cnt       = 0;
        h_tim.period_elapse_cbk = ald_timer_period_elapsed_callback;
        ald_timer_base_init(&h_tim);

        /* Initialize clock source */
        tim_clock.source = TIMER_SRC_INTER;
        ald_timer_config_clock_source(&h_tim, &tim_clock);

        /* Enable GP16C4T0 interrupt */
        ald_mcu_irq_config(GP16C4T0_IRQn, 0, 3, ENABLE);        
        /* Enable UPDATE interrupt */
        ald_timer_interrupt_config(&h_tim, TIMER_IT_UPDATE, ENABLE);
        /* Start input pwm from GP16C4T0 channel 1 */
        ald_timer_base_start(&h_tim);
        
        while(1) {

        }
}
void ald_timer_period_elapsed_callback(struct timer_handle_s *arg)
{
        PWMcount++;
        Breathingcount++;
        if(PWMcount==PWMduty)
        {
                ald_gpio_write_pin(GPIOF,GPIO_PIN_0,1);
                ald_gpio_write_pin(GPIOF,GPIO_PIN_1,1);
        }
        if(PWMcount==30)
        {
                ald_gpio_write_pin(GPIOF,GPIO_PIN_0,0);
                ald_gpio_write_pin(GPIOF,GPIO_PIN_1,0);
                PWMcount=0;
        }
        if(Breathingcount==1000&&directflag==0)
        {
                Breathingcount=0;
                PWMduty++;
                if(PWMduty==25)
                {
                        directflag=1;
                }
        }
        if(Breathingcount==1000&&directflag==1)
        {
                Breathingcount=0;
                PWMduty--;
                if(PWMduty==1)
                {
                        directflag=0;
                }
        }
        
}
效果如下:











使用特权

评论回复

相关帖子

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

本版积分规则

31

主题

135

帖子

3

粉丝