wangpeng 发表于 2022-1-7 17:00:06

【复旦微FM33LG0X试用】点个灯

【复旦微FM33LG0X试用】点个灯

原帖地址:【复旦微FM33LG0X试用】点个灯 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛

有幸抽中盲盒,获得复旦微FM33LGX开发板

手里现在只有stlinkv2 10pin的,还是山寨的,连上开发板后,设置好参数后开始测试
发现stlink可以download,也可以仿真,但是download后板子不能自己复位
只能通过仿真再退出省略手动复位,或者是我没有设置对?

下面进正题
点个灯
LED1——>PC1——>GPT1_CH2
LED1——>PC0——>GPT1_CH1
看开发板原理图发现有两颗灯连接到通用定时器1上,那就做成呼吸灯吧

首先初始化IO
FL_GPTIM_InitTypeDef      timInit;

    FL_GPTIM_OC_InitTypeDef   timOCInit;

    FL_GPIO_InitTypeDef         gpioInit = {0};



    gpioInit.pin = FL_GPIO_PIN_0|FL_GPIO_PIN_1;//PC0,PC1

    gpioInit.mode = FL_GPIO_MODE_DIGITAL;

    gpioInit.outputType = FL_GPIO_OUTPUT_PUSHPULL;

    gpioInit.pull = FL_DISABLE;

    gpioInit.remapPin = FL_DISABLE;

    FL_GPIO_Init(GPIOC, &gpioInit);

然后配置通用定时器


timInit.prescaler             = 800 - 1;                     // 分频系数8000

    timInit.counterMode         = FL_GPTIM_COUNTER_DIR_UP;   // 向上计数

    timInit.autoReload            = 200 - 1;                        // 自动重装载值1000

    timInit.clockDivision         = FL_GPTIM_CLK_DIVISION_DIV1;// 死区和滤波分频

    timInit.autoReloadState       = FL_ENABLE;                     // 预装载preload使能

    FL_GPTIM_Init(GPTIM1, &timInit);然后配置相应输出通道
timOCInit.OCMode       = FL_GPTIM_OC_MODE_PWM1;                  // 输出比较模式PWM1

    timOCInit.OCETRFStatus = FL_DISABLE;                              // OC1REF不受ETR影响

    timOCInit.OCFastMode   = FL_DISABLE;                              // 关闭快速使能

    timOCInit.compareValue = 500;                                    // 比较值500

    timOCInit.OCPolarity   = FL_GPTIM_OC_POLARITY_NORMAL;            // OC正常输出

    timOCInit.OCPreload    = FL_DISABLE;                              // OC preload 无效

    FL_GPTIM_OC_Init(GPTIM1,         FL_GPTIM_CHANNEL_1, &timOCInit);//CH1

                FL_GPTIM_OC_Init(GPTIM1,      FL_GPTIM_CHANNEL_2, &timOCInit);//CH2最后进行PWM的调整实现呼吸效果
if(dir)ledpwm++;

                        else ledpwm--;演示效果


完整代码:








页: [1]
查看完整版本: 【复旦微FM33LG0X试用】点个灯