有幸抽中盲盒,获得复旦微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--;
演示效果
完整工程
GPTIM PWM呼吸灯.rar
(6.61 MB)
|