[MSP432] 电源类竞赛专用MSP432代码.c

shannon2014   2015-8-2 18:33 楼主
楼主准备参见今年的电赛,选题方向呢是有关电源类的,往年一直用5529,今年入手了MSP432,就准备选这款做主控了,经过几天努力,准备好了代码,现在来和大家分享下
  • QQ图片20150802183133.png

回复评论 (24)

楼主一向习惯用库函数,这次当然也不例外啦,首先打开CCS的MSPWARE,新建一个工程
  • QQ截图20150802183516.png
点赞  2015-8-2 18:36
在此基础上我们可以一步步移植库函数的例子,首先呢就从时钟系统开始吧,感兴趣的同志们去研读下芯片手册,432的时钟系统叫CS,吓了一跳当时也是,首先看这两个例子,clock_Init和HFxt_start
  • QQ截图20150802184050.png
点赞  2015-8-2 18:41
我们可以看到这两段代码:
int main(void)
{
    /* Halting the Watchdog */
    MAP_WDT_A_holdTimer();
   
    /* Configuring pins for peripheral/crystal usage and LED for output */
    MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ,
            GPIO_PIN3 | GPIO_PIN4, GPIO_PRIMARY_MODULE_FUNCTION);
    MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);

    /* Setting the external clock frequency. This API is optional, but will
     * come in handy if the user ever wants to use the getMCLK/getACLK/etc
     * functions
     */
    CS_setExternalClockSourceFrequency(32000,48000000);

    /* Starting HFXT in non-bypass mode without a timeout. Before we start
     * we have to change VCORE to 1 to support the 48MHz frequency */
    MAP_PCM_setCoreVoltageLevel(PCM_VCORE1);
    MAP_FlashCtl_setWaitState(FLASH_BANK0, 2);
    MAP_FlashCtl_setWaitState(FLASH_BANK1, 2);
    CS_startHFXT(false);

    /* Initializing MCLK to HFXT (effectively 48MHz) */
    MAP_CS_initClockSignal(CS_MCLK, CS_HFXTCLK_SELECT, CS_CLOCK_DIVIDER_1);
   
    /* Configuring SysTick to trigger at 24000000 (MCLK is 48MHz so this will
     * make it toggle every 0.5s) */
    MAP_SysTick_enableModule();
    MAP_SysTick_setPeriod(24000000);
    MAP_Interrupt_enableSleepOnIsrExit();
    MAP_SysTick_enableInterrupt();
   
     /* Enabling MASTER interrupts */
    MAP_Interrupt_enableMaster();   

    while (1)
    {
        MAP_PCM_gotoLPM0();
    }
}

void systick_isr(void)
{
    MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
}



int main(void)
{
    /* Halting WDT */
    MAP_WDT_A_holdTimer();

    /* Initializing the clock source as follows:
     *      MCLK = MODOSC/4 = 6MHz
     *      ACLK = REFO/2 = 16kHz
     *      HSMCLK = DCO/2 = 1.5Mhz
     *      SMCLK = DCO/4 = 750kHz
     *      BCLK  = REFO = 32kHz
     */
    MAP_CS_initClockSignal(CS_MCLK, CS_MODOSC_SELECT, CS_CLOCK_DIVIDER_4);
    MAP_CS_initClockSignal(CS_ACLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_2);
    MAP_CS_initClockSignal(CS_HSMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_2);
    MAP_CS_initClockSignal(CS_SMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_4);
    MAP_CS_initClockSignal(CS_BCLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);

    /*
     *  Getting all of the frequency values of the CLK sources using the
     * convenience functions */
    aclk = CS_getACLK();
    mclk = CS_getMCLK();
    smclk = CS_getSMCLK();
    hsmclk = CS_getHSMCLK();
    bclk = CS_getBCLK();

    /*
     * Staying in active mode so that the user can see the values that are put
     * in the above registers through the debugger
     */
    while (1)
    {

    }
}
点赞  2015-8-2 18:44
容我们组合以下就是所需要的时钟配置代码啦
  • QQ截图20150802184445.png
  • QQ截图20150802184500.png
点赞  2015-8-2 18:53
类似的呢我们可以完成ADC,TIMER,SYSTICK,等的配置,我就不一一说明啦,这里附上自己的成品,加上一个PI算法控制输出电压恒定的代码,大家今年电赛加油啊,有什么问题的直接回复好啦

    MSP432.rar (2015-8-2 19:13 上传)

    8.28 KB, 下载次数: 69

点赞  2015-8-2 19:13
需要注意的是,432的库函数的中断要在这个文件中修改中断表才可以写自己的中断函数
  • QQ截图20150802192813.png
点赞  2015-8-2 19:28
非常详细,谢谢楼主分享。
加油!在电子行业默默贡献自己的力量!:)
点赞  2015-8-3 08:58
大赛都用上了msp432
点赞  2015-8-3 09:01
很好,学习一下
点赞  2015-8-8 14:29
好快啊。。。。。还好比较早的看到,要多多向你学习
点赞  2015-8-19 00:18
啊啊啊啊啊啊啊啊啊啊啊
点赞  2016-7-9 14:00
快啊。。。。。还好比较早的看到,要多多向你学习
点赞  2016-8-26 10:26
不错不错,支持楼主一下~
点赞  2016-8-26 12:40
不错哟,怎么我才看到呢!
点赞  2017-1-19 13:24
给楼主献上膝盖了,对了,想问一下楼主这个维持电压恒定的硬件电路咋搭的
点赞  2017-2-8 20:44
谢谢楼主的分享,非常好的资料
点赞  2017-3-14 10:17
引用: wsws阿毛 发表于 2017-2-8 20:44
给楼主献上膝盖了,对了,想问一下楼主这个维持电压恒定的硬件电路咋搭的

同步buck
点赞  2017-4-13 14:18
点赞  2017-4-13 14:46
楼主还有5529 做电源的资料吗  求分享
点赞  2017-4-28 19:26
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复