一 将撸的羊毛板子上的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)
离线
锁相环启动一定要先启动外部晶体,等它稳定后才能启动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();
}
离线