本帖最后由 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;
}
}
}
效果如下:
|