[MCU] 【复旦微FM33LC046N评测】+GPTIM呼吸灯

叫我阿深就好   2021-2-25 23:35 楼主

拿到Jlink第一时间进行上电测试,不知是Jlink固件版本问题还是硬件本身问题 MDK上传程序老是无法识别芯片。

image.png 尝试未解决,有大佬遇到还请指点迷津。

万物皆可点灯,前面已经有博主撸了按键控制LED的程序,今天就来个呼吸灯吧!

根据手册可知LC046N有六个定时器

image.png Demo板的LED分别挂载在两个通用定时器GPTIM

image.png image.png 这里使用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
    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;  //ETR清零使能

    FL_GPTIM_OC_Init(GPTIM0,FL_GPTIM_CHANNEL_1,&defaultInitStruct );

    
}


在fm33lc0xx_fl_gptim.h中可以看到TIM的输出函数,直接在主函数中调用即可

image.png 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;										 
		
	  	//pwmval++;
     // FL_GPTIM_WriteCompareCH2(GPTIM0,pwmval);
		 FL_GPTIM_WriteCompareCH1(GPTIM0,pwmval);
    }

}


运行效果

本帖最后由 叫我阿深就好 于 2021-2-25 23:37 编辑

回复评论 (7)

1 来自 7楼 叫我阿深就好 

Jlink烧录无法识别芯片问题已解决

原因:供电问题

由于手上没有多余的USB_B的数据线,板子除了Jlink就没有别的外部供电,导致芯片在烧录时掉电不工作。

image.png image.png

image.png

点赞  2021-3-1 12:05
一般JTLINK连不上都是驱动问题,硬件一般不会有什么问题
点赞  2021-2-26 10:51

亲,应该是你的flash没有选对,在这个链接https://m.eeworld.com.cn/bbs_thread-1155827-1-1.html,把jflash工程配置下载下来,找到这块开发板的flash,然后在Keil中flash download中,add该flash,然后再烧写试下

点赞  2021-2-26 12:18
引用: chrisrh 发表于 2021-2-26 12:18 亲,应该是你的flash没有选对,在这个链接https://m.eeworld.com.cn/bbs_thread-1155827-1-1.html,把jflash ...

亲,我选的就是LC046的啊,不是每次都出现这个错误,但是烧录那个FreeRTOS的demo是一直这样导致无法烧录

image.png

点赞  2021-2-26 13:53

很详细,学习了,谢谢分享

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-2-26 21:55
引用: 叫我阿深就好 发表于 2021-2-26 13:53 亲,我选的就是LC046的啊,不是每次都出现这个错误,但是烧录那个FreeRTOS的demo是一直这样导致无法烧录 ...

把Reset and Run的勾选取消后再试试

点赞  2021-2-28 23:49
引用: chrisrh 发表于 2021-2-28 23:49 把Reset and Run的勾选取消后再试试

供电问题,已解决,谢谢

点赞  2021-3-1 12:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复