【复旦微FM33LC046N评测】+GPTIM呼吸灯
[复制链接]
本帖最后由 叫我阿深就好 于 2021-2-25 23:37 编辑
拿到Jlink第一时间进行上电测试,不知是Jlink固件版本问题还是硬件本身问题 MDK上传程序老是无法识别芯片。
尝试未解决,有大佬遇到还请指点迷津。
万物皆可点灯,前面已经有博主撸了按键控制LED的程序,今天就来个呼吸灯吧!
根据手册可知LC046N有六个定时器
Demo板的LED分别挂载在两个通用定时器GPTIM
这里使用LED3作为演示对象,LED3对应GPIO_B10
初始化GPIO_B10和GPTIM0的通道1,设置预分频系数和自动重装载值;
- void MF_GPTIM0_TimerBase_Init(void)
- {
-
- FL_GPTIM_InitTypeDef TimerBaseInitStruct;
-
- TimerBaseInitStruct.prescaler = (uint16_t)999;
- TimerBaseInitStruct.counterMode = FL_GPTIM_COUNTER_DIR_UP;
- TimerBaseInitStruct.autoReload = 120;
- TimerBaseInitStruct.autoReloadState = DISABLE;
- TimerBaseInitStruct.clockDivision = FL_GPTIM_CLK_DIVISION_DIV1;
-
- FL_GPTIM_Init(GPTIM0,&TimerBaseInitStruct );
-
-
- }
-
- void MF_GPTIM0_Channel1_Init(void)
- {
-
- FL_GPIO_InitTypeDef GPIO_InitStruct;
-
- FL_GPTIM_OC_InitTypeDef defaultInitStruct;
-
- GPIO_InitStruct.pin = FL_GPIO_PIN_10;
- GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
- GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- GPIO_InitStruct.pull = DISABLE;
- GPIO_InitStruct.remapPin = ENABLE;
-
- FL_GPIO_Init( GPIOB, &GPIO_InitStruct );
-
- defaultInitStruct.OCMode = FL_GPTIM_OC_MODE_PWM1;
- defaultInitStruct.OCFastMode = DISABLE;
- defaultInitStruct.OCPreload = DISABLE;
- defaultInitStruct.compareValue = 0x1F4U;
- defaultInitStruct.OCPolarity = FL_GPTIM_OC_POLARITY_NORMAL;
- defaultInitStruct.OCETRFStatus = DISABLE;
-
- FL_GPTIM_OC_Init(GPTIM0,FL_GPTIM_CHANNEL_1,&defaultInitStruct );
-
-
- }
在fm33lc0xx_fl_gptim.h中可以看到TIM的输出函数,直接在主函数中调用即可
main.c
- #include "main.h"
- #include "demo_gptim.h"
-
-
-
- int main(void)
- {
- uint16_t pwmval=10;
- uint8_t dir=1;
- MF_Clock_Init();
-
-
- MF_SystemClock_Config();
-
- UserInit();
-
-
- MF_Config_Init();
- GPTIM_Start( );
-
- while(1)
- { DelayMs(6);
-
- if(dir)pwmval++;
- else pwmval--;
-
- if(pwmval>160)dir=0;
- if(pwmval<10)dir=1;
-
-
-
- FL_GPTIM_WriteCompareCH1(GPTIM0,pwmval);
- }
-
- }
-
-
-
运行效果

|