msp432(Msp432是什么类型的芯片)

msp432(Msp432是什么类型的芯片)p MSP432 共有六个时钟源 五个时钟 下面分别由我来介绍一下 p p 时钟源分别有以下几个 p p LFXTCLK 低频振荡器 LFXT 可与低频 32768 Hz 手表配套使用 晶体 标准晶体 谐振器 或外部时钟源在 32 千赫或以下的范围 当在旁路模式下 LFXTCLK 可以由 32 khz 或以下的外部方波信号驱动的范围内 p p HFXTCLK p

大家好,我是讯享网,很高兴认识大家。




讯享网

 <p>MSP432共有六个时钟源,五个时钟,下面分别由我来介绍一下<p>时钟源分别有以下几个<p>LFXTCLK:低频振荡器(LFXT),可与低频32768-Hz手表配套使用,晶体,标准晶体,谐振器,或外部时钟源在32千赫或以下的范围。当在旁路模式下,LFXTCLK可以由32 khz或以下的外部方波信号驱动的范围内。<p>HFXTCLK:高频振荡器(HFXT),可与1-MHz至48-MHz范围内的标准晶体或谐振器一起使用。在旁路模式下,HFXTCLK可以通过外部方波信号驱动。<p>DCOCLK:内部数字控制振荡器(DCO),默认频率为可编程频率和3 mhz频率。<p>VLOCLK:内部极低功率低频振荡器(VLO),典型频率为9.4 khz<p>REFOCLK:内部低功率低频振荡器(REFO),可选择32.768 kHz或128- kHz的典型频率<p>MODCLK: 25 mhz典型频率的内部低功率振荡器<p>SYSOSC: 5 mhz典型频率的内部振荡器<p>时钟一共有5个,分别是<p>ACLK:辅助时钟。ACLK软件可选为LFXTCLK、VLOCLK或REFOCLK。ACLK可以被1、2、4、8、16、32、64或128除。ACLK是一款可由各个外围模块选择的软件。ACLK的最大工作频率为128khz。<p>MCLK:主时钟。MCLK软件可选为LFXTCLK, VLOCLK, REFOCLK, DCOCLK,MODCLK或HFXTCLK。MCLK可以除以1、2、4、8、16、32、64或128。MCLK是由CPU和外设模块接口,以及一些外设模块直接使用的接口。<p>HSMCLK:子系统主时钟。HSMCLK软件可选为LFXTCLK, VLOCLK,<br/>REFOCLK, DCOCLK, MODCLK, HFXTCLK。HSMCLK可以除以1、2、4、8、16、32、64或128。<br/>HSMCLK是可由单个外围模块选择的软件。<p>SMCLK:低速子系统主时钟。SMCLK使用HSMCLK时钟资源选择作为其时钟资源。SMCLK可以独立于HSMCLK除以1、2、4、8、16、32、64或128. SMCLK的频率限制为HSMCLK额定最大频率的一半。SMCLK是可由单个外围模块选择的软件。<p>BCLK:低速备份域时钟。BCLK软件可选为LFXTCLK和REFOCLK和主要用于备份域。BCLK的最大频率限制为32.768 kHz。<p>VLOCLK、REFOCLK、LFXTCLK、MODCLK和SYSCLK是来自时钟模块。其中一些不仅可以作为各种系统时钟的资源,而且可以也可直接用于各种外设模块。<p><br/></p><p>时钟源分别有以下几个<p>LFXTCLK:低频振荡器(LFXT),可与低频32768-Hz手表配套使用,晶体,标准晶体,谐振器,或外部时钟源在32千赫或以下的范围。当在旁路模式下,LFXTCLK可以由32 khz或以下的外部方波信号驱动的范围内。<p><br/><p>HFXTCLK:高频振荡器(HFXT),可与1-MHz至48-MHz范围内的标准晶体或谐振器一起使用。在旁路模式下,HFXTCLK可以通过外部方波信号驱动。<p>DCOCLK:内部数字控制振荡器(DCO),默认频率为可编程频率和3 mhz频率。<p>VLOCLK:内部极低功率低频振荡器(VLO),典型频率为9.4 khz<p>REFOCLK:内部低功率低频振荡器(REFO),可选择32.768 kHz或128- kHz的典型频率<p>MODCLK: 25 mhz典型频率的内部低功率振荡器<p>SYSOSC: 5 mhz典型频率的内部振荡器<p>时钟一共有5个,分别是<p>ACLK:辅助时钟。ACLK软件可选为LFXTCLK、VLOCLK或REFOCLK。ACLK可以被1、2、4、8、16、32、64或128除。ACLK是一款可由各个外围模块选择的软件。ACLK的最大工作频率为128khz。<p>MCLK:主时钟。MCLK软件可选为LFXTCLK, VLOCLK, REFOCLK, DCOCLK,MODCLK或HFXTCLK。MCLK可以除以1、2、4、8、16、32、64或128。MCLK是由CPU和外设模块接口,以及一些外设模块直接使用的接口。<p>HSMCLK:子系统主时钟。HSMCLK软件可选为LFXTCLK, VLOCLK,<br/>REFOCLK, DCOCLK, MODCLK, HFXTCLK。HSMCLK可以除以1、2、4、8、16、32、64或128。<br/>HSMCLK是可由单个外围模块选择的软件。<p>SMCLK:低速子系统主时钟。SMCLK使用HSMCLK时钟资源选择作为其时钟资源。SMCLK可以独立于HSMCLK除以1、2、4、8、16、32、64或128. SMCLK的频率限制为HSMCLK额定最大频率的一半。SMCLK是可由单个外围模块选择的软件。<p>BCLK:低速备份域时钟。BCLK软件可选为LFXTCLK和REFOCLK和主要用于备份域。BCLK的最大频率限制为32.768 kHz。<p>VLOCLK、REFOCLK、LFXTCLK、MODCLK和SYSCLK是来自时钟模块。其中一些不仅可以作为各种系统时钟的资源,而且可以也可直接用于各种外设模块。<p><br/><p><br/><p><br/></p> <p>&nbsp;* MSP432E4 Empty Project<p>&nbsp;*<p>&nbsp;* Description: An empty project that uses DriverLib<p>&nbsp;*<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MSP432E401Y<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------------------<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; /|| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--|RST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PF2 &nbsp;|--->25%PWM<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PF3 &nbsp;|--->75%PWM<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<p>&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<p>&nbsp;* Author:&nbsp;<p>*/<p>/* DriverLib Includes */<p>#include <ti/devices/msp432e4/driverlib/driverlib.h><p><br/><p>/* Standard Includes */<p>#include <stdint.h><p>#include <stdbool.h><p><br/><p>/* Global variable for system clock */<p>uint32_t getSystemClock;<p><br/><p>/* PWM ISR */<p>void PWM0_0_IRQHandler(void)<p>{<p>&nbsp; &nbsp; uint32_t getIntStatus;<p><br/><p>&nbsp; &nbsp; getIntStatus = MAP_PWMGenIntStatus(PWM0_BASE, PWM_GEN_1, true);<p><br/><p>&nbsp; &nbsp; MAP_PWMGenIntClear(PWM0_BASE, PWM_GEN_1, getIntStatus);<p><br/><p>}<p><br/><p><br/><p>int main(void)<p>{<p><br/><p>&nbsp; &nbsp;/* Configure the system clock for 16 MHz internal oscillator */<p>&nbsp; &nbsp; getSystemClock = MAP_SysCtlClockFreqSet((SYSCTL_OSC_INT |<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SYSCTL_USE_OSC), );<p><br/><p>&nbsp; &nbsp; /* The PWM peripheral must be enabled for use. */<p>&nbsp; &nbsp; MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);<p>&nbsp; &nbsp; while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0)));<p><br/><p>&nbsp; &nbsp; /* Set the PWM clock to the system clock. */<p>&nbsp; &nbsp; MAP_PWMClockSet(PWM0_BASE,PWM_SYSCLK_DIV_1);<p><br/><p>&nbsp; &nbsp; /* Enable the clock to the GPIO Port F for PWM pins */<p>&nbsp; &nbsp; MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);<p>&nbsp; &nbsp; while(!MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF));<p><br/><p>&nbsp; &nbsp; MAP_GPIOPinConfigure(GPIO_PF2_M0PWM2);<p>&nbsp; &nbsp; MAP_GPIOPinConfigure(GPIO_PF3_M0PWM3);<p>&nbsp; &nbsp; MAP_GPIOPinTypePWM(GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3));<p><br/><p>&nbsp; &nbsp; /* Configure the PWM0 to count up/down without synchronization. */<p>&nbsp; &nbsp; MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN |<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PWM_GEN_MODE_NO_SYNC);<p><br/><p>&nbsp; &nbsp; /* Set the PWM period to 250Hz. &nbsp;To calculate the appropriate parameter<p>&nbsp; &nbsp; &nbsp;* use the following equation: N = (1 / f) * SysClk. &nbsp;Where N is the<p>&nbsp; &nbsp; &nbsp;* function parameter, f is the desired frequency, and SysClk is the<p>&nbsp; &nbsp; &nbsp;* system clock frequency.<p>&nbsp; &nbsp; &nbsp;* In this case you get: (1 / 250Hz) * 16MHz = 64000 cycles. &nbsp;Note that<p>&nbsp; &nbsp; &nbsp;* the maximum period you can set is 2^16 - 1. */<p>&nbsp; &nbsp; MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 64000);<p><br/><p>&nbsp; &nbsp; /* Set PWM0 PF0 to a duty cycle of 25%. &nbsp;You set the duty cycle as a<p>&nbsp; &nbsp; &nbsp;* function of the period. &nbsp;Since the period was set above, you can use the<p>&nbsp; &nbsp; &nbsp;* PWMGenPeriodGet() function. &nbsp;For this example the PWM will be high for<p>&nbsp; &nbsp; &nbsp;* 25% of the time or 16000 clock cycles (64000 / 4). */<p>&nbsp; &nbsp; MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2,<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4);<p><br/><p>&nbsp; &nbsp; /* Set PWM0 PF1 to a duty cycle of 75%. &nbsp;You set the duty cycle as a<p>&nbsp; &nbsp; &nbsp;* function of the period. &nbsp;Since the period was set above, you can use the<p>&nbsp; &nbsp; &nbsp;* PWMGenPeriodGet() function. &nbsp;For this example the PWM will be high for<p>&nbsp; &nbsp; &nbsp;* 7% of the time or 16000 clock cycles 3*(64000 / 4). */<p>&nbsp; &nbsp; MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3,<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4);<p><br/><p>&nbsp; &nbsp; MAP_IntMasterEnable();<p><br/><p>&nbsp; &nbsp; /* This timer is in up-down mode. &nbsp;Interrupts will occur when the<p>&nbsp; &nbsp; &nbsp;* counter for this PWM counts to the load value (64000), when the<p>&nbsp; &nbsp; &nbsp;* counter counts up to 64000/4 (PWM A Up), counts down to 64000/4<p>&nbsp; &nbsp; &nbsp;* (PWM A Down), and counts to 0. */<p>&nbsp; &nbsp; MAP_PWMGenIntTrigEnable(PWM0_BASE, PWM_GEN_1,<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PWM_INT_CNT_ZERO | PWM_INT_CNT_LOAD |<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PWM_INT_CNT_AU | PWM_INT_CNT_AD);<p>&nbsp; &nbsp; MAP_IntEnable(INT_PWM0_1);<p><br/><p>&nbsp; &nbsp; MAP_PWMIntEnable(PWM0_BASE, PWM_INT_GEN_1);<p><br/><p>&nbsp; &nbsp; /* Enable the PWM0 Bit 0 (PF0) and Bit 1 (PF1) output signals. */<p>&nbsp; &nbsp; MAP_PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT | PWM_OUT_3_BIT, true);<p><br/><p>&nbsp; &nbsp; /* Enables the counter for a PWM generator block. */<p>&nbsp; &nbsp; MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_1);<p><br/><p>&nbsp; &nbsp; /* Loop forever while the PWM signals are generated. */<p>&nbsp; &nbsp; while(1)<p>&nbsp; &nbsp; {<p><br/><p>&nbsp; &nbsp; }<p>} 

讯享网
小讯
上一篇 2025-06-16 18:39
下一篇 2025-05-27 09:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/185764.html