您尚未登录。

楼主 #1 2020-06-13 01:45:41

演技担当黄晓明
会员
注册时间: 2017-10-17
已发帖子: 183
积分: 121.5

BLDC 开源 第一课作业(点灯)

一  将撸的羊毛板子上的nulink2 me掰下来焊接好排线,接上USB,板上灯正常点亮,硬件OK
二  开始编写软件
1.找出占用资源
  调试口
  PWM输出口
  比较器输入口
  时钟口
  LED口
  用NuTool - PinConfigure.exe 生成PIN脚初始化代码
2.拷贝进我的状态机系统
   将Task文件夹拷贝进目录,加入工程
3.启动systick中断 
  InitPLL();
  SysTick_Config(SystemCoreClock/1000);
4.打开闪烁任务
void TaskBlinLed(void)
{

    static unsigned char count =0;           
    count=(++count)%10;   
    if(count==0)
    { 
        //GPIO_ClrBit (GPIOA, PIN11);
      LED1 =LED2=LED3=LED4 = 1;
    }
    else
    { 
        //GPIO_SetBit(GPIOA, PIN11);   
      LED1 =LED2=LED3=LED4 = 0;
    }

}

闪烁正常

唯一美中不足的是外部晶振无法启用,定时不是太准确

作业代码
BLDC.rar

最近编辑记录 演技担当黄晓明 (2020-06-13 01:46:47)

离线

楼主 #2 2020-06-13 08:56:46

演技担当黄晓明
会员
注册时间: 2017-10-17
已发帖子: 183
积分: 121.5

Re: BLDC 开源 第一课作业(点灯)

锁相环启动一定要先启动外部晶体,等它稳定后才能启动PLL
更改代码如下

void InitPLL(void)
{      
  int32_t i32TimeoutCnt = 0;    
  PllClock = 0;       
  SYS_UnlockReg();
  //Enable external XTAL 12MHz clock
  CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk;  
  i32TimeoutCnt = (__HXT / 1000); // Timeout is about 1ms  
  while((CLK->CLKSTATUS & CLK_CLKSTATUS_XTL12M_STB_Msk) != CLK_CLKSTATUS_XTL12M_STB_Msk)
  {
      if(--i32TimeoutCnt <= 0)
        break;
  }
  /// Set to 50MHz system clock frequency when clock source is from external 12MHz 
  CLK->PLLCON = CLK_PLLCON_50MHz_HXT;

  // Waiting for PLL ready 
  i32TimeoutCnt = (__HXT / 1000); // Timeout is about 1ms  
  while((CLK->CLKSTATUS & CLK_CLKSTATUS_PLL_STB_Msk) == 0)
  {
    if(--i32TimeoutCnt <= 0)
      break;
  }  
  // Set PLL as HCLK clock source (HCLK_S is locked setting) 
  
  CLK->CLKSEL0 = CLK_CLKSEL0_HCLK_S_PLL;        
  SYS_LockReg(); 
   
  SystemCoreClockUpdate();
  
} 

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn