Rev 1 | Rev 238 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1 | Rev 196 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** |
1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** |
2 | * File Name : 91x_scu.c |
2 | * File Name : 91x_scu.c |
3 | * Author : MCD Application Team |
3 | * Author : MCD Application Team |
- | 4 | * Version : V2.1 |
|
4 | * Date First Issued : 05/18/2006 : Version 1.0 |
5 | * Date : 12/22/2008 |
5 | * Description : This file provides the SCU library software functions |
6 | * Description : This file provides the SCU library firmware functions |
6 | ******************************************************************************** |
- | |
7 | * History: |
- | |
8 | * 05/22/2007 : Version 1.2 |
- | |
9 | * 05/24/2006 : Version 1.1 |
- | |
10 | * 05/18/2006 : Version 1.0 |
- | |
11 | ******************************************************************************** |
7 | ******************************************************************************** |
12 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH |
8 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH |
13 | * CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS |
9 | * CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS |
14 | * A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT |
10 | * A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT |
15 | * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT |
11 | * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT |
Line 93... | Line 89... | ||
93 | * *trying to enable the PLL while it is already enabled and |
89 | * *trying to enable the PLL while it is already enabled and |
94 | * locked |
90 | * locked |
95 | *******************************************************************************/ |
91 | *******************************************************************************/ |
96 | ErrorStatus SCU_PLLCmd(FunctionalState NewState) |
92 | ErrorStatus SCU_PLLCmd(FunctionalState NewState) |
97 | { |
93 | { |
98 | vu32 i; |
- | |
99 | if (NewState==ENABLE) |
94 | if (NewState==ENABLE) |
100 | { |
95 | { |
101 | if (!((SCU->PLLCONF&SCU_PLLEN)&&(SCU->SYSSTATUS&SCU_FLAG_LOCK))) |
96 | if (!((SCU->PLLCONF&SCU_PLLEN)&&(SCU->SYSSTATUS&SCU_FLAG_LOCK))) |
102 | { |
97 | { |
103 | SCU->SYSSTATUS|=SCU_FLAG_LOCK; /*clear LOCK bit*/ |
98 | SCU->SYSSTATUS|=SCU_FLAG_LOCK; /*clear LOCK bit*/ |
104 | SCU->PLLCONF |=SCU_PLLEN; /*PLL Enable*/ |
99 | SCU->PLLCONF |=SCU_PLLEN; /*PLL Enable*/ |
105 | while(!SCU->SYSSTATUS&SCU_FLAG_LOCK); /*Wait PLL to lock*/ |
100 | while(!(SCU->SYSSTATUS&SCU_FLAG_LOCK)); /*Wait PLL to lock*/ |
106 | return SUCCESS; |
101 | return SUCCESS; |
107 | } |
102 | } |
108 | else return ERROR; |
103 | else return ERROR; |
109 | } |
104 | } |
110 | else /*NewState = DISABLE*/ |
105 | else /*NewState = DISABLE*/ |
111 | { |
106 | { |
112 | if(SCU->CLKCNTR&0x3) /*check if PLL not sys CLK*/ |
107 | if(SCU->CLKCNTR&0x3) /*check if PLL not sys CLK*/ |
113 | { |
108 | { |
114 | for(i=10;i>0;i--); /*delay before PLL disabling*/ |
- | |
115 | SCU->PLLCONF &=~SCU_PLLEN; /*PLL Disable*/ |
109 | SCU->PLLCONF &=~SCU_PLLEN; /*PLL Disable*/ |
116 | return SUCCESS; |
110 | return SUCCESS; |
117 | } |
111 | } |
118 | else return ERROR; |
112 | else return ERROR; |
119 | } |
113 | } |
Line 186... | Line 180... | ||
186 | * Return : None |
180 | * Return : None |
187 | *******************************************************************************/ |
181 | *******************************************************************************/ |
188 | void SCU_AHBPeriphClockConfig(u32 AHBPeriph, FunctionalState NewState) |
182 | void SCU_AHBPeriphClockConfig(u32 AHBPeriph, FunctionalState NewState) |
189 | { |
183 | { |
190 | if (NewState==ENABLE) /*Enable clock for AHB peripheral*/ |
184 | if (NewState==ENABLE) /*Enable clock for AHB peripheral*/ |
191 | SCU->PCGRO |=AHBPeriph; |
185 | SCU->PCGR0 |=AHBPeriph; |
192 | else |
186 | else |
193 | SCU->PCGRO &=~AHBPeriph; /*Disable clock for AHB peripheral*/ |
187 | SCU->PCGR0 &=~AHBPeriph; /*Disable clock for AHB peripheral*/ |
194 | } |
188 | } |
Line 195... | Line 189... | ||
195 | 189 | ||
196 | /******************************************************************************* |
190 | /******************************************************************************* |
197 | * Function Name : SCU_APBPeriphReset |
191 | * Function Name : SCU_APBPeriphReset |
Line 301... | Line 295... | ||
301 | if (BRCLK_Divisor==SCU_BRCLK_Div1) |
295 | if (BRCLK_Divisor==SCU_BRCLK_Div1) |
302 | SCU->CLKCNTR |= SCU_BRCLK_Div1; /*set bit BRSEL*/ |
296 | SCU->CLKCNTR |= SCU_BRCLK_Div1; /*set bit BRSEL*/ |
303 | } |
297 | } |
Line 304... | Line 298... | ||
304 | 298 | ||
305 | /******************************************************************************* |
299 | /******************************************************************************* |
306 | * Function Name : SCU_TIMCLKSourceConfig |
300 | * Function Name : SCU_TIMExtCLKCmd |
307 | * Description : Sets the TIMx clock source |
301 | * Description : Enable or disable the TIMx external clock source |
308 | * Input : - TIMx : SCU_TIM01 or SCU_TIM23 |
302 | * Input : - TIMx : SCU_TIM01 or SCU_TIM23 |
309 | * - TIMCLK_Source = SCU_TIMCLK_EXT or SCU_TIMCLK_INT |
303 | * - NewState : ENABLE or DISABLE |
310 | * Output : None |
304 | * Output : Non |
311 | * Return : None |
305 | * Return : None |
312 | *******************************************************************************/ |
306 | *******************************************************************************/ |
313 | void SCU_TIMCLKSourceConfig(u8 TIMx, u32 TIMCLK_Source) |
307 | void SCU_TIMExtCLKCmd (u8 TIMx, FunctionalState NewState) |
314 | { |
308 | { |
315 | if (TIMx== SCU_TIM01) /*TIM01 clock source configuration*/ |
309 | if (TIMx== SCU_TIM01) /*TIM01 clock source configuration*/ |
316 | { |
310 | { |
317 | SCU->CLKCNTR &=0xFFFFDFFF; |
311 | SCU->CLKCNTR &=0xFFFFDFFF; |
318 | if (TIMCLK_Source == SCU_TIMCLK_EXT) |
312 | if (NewState==ENABLE) |
319 | SCU->CLKCNTR |=0x2000; |
313 | SCU->CLKCNTR |=0x2000; |
320 | } |
314 | } |
321 | else |
315 | else |
322 | { |
316 | { |
323 | SCU->CLKCNTR &=0xFFFFBFFF; /*TIM23 clock source configuration*/ |
317 | SCU->CLKCNTR &=0xFFFFBFFF; /*TIM23 clock source configuration*/ |
324 | if (TIMCLK_Source == SCU_TIMCLK_EXT) |
318 | if (NewState==ENABLE) |
325 | SCU->CLKCNTR |=0x4000; |
319 | SCU->CLKCNTR |=0x4000; |
326 | } |
320 | } |
Line 327... | Line 321... | ||
327 | } |
321 | } |
328 | - | ||
329 | /******************************************************************************* |
- | |
330 | * Function Name : SCU_TIMPresConfig |
- | |
331 | * Description : Sets the TIMx Prescaler Value |
- | |
332 | * Input : - TIMx : SCU_TIM01 or SCU_TIM23 |
- | |
333 | * - Prescaler (16 bit value) |
- | |
334 | * Output : None |
- | |
335 | * Return : None |
- | |
336 | *******************************************************************************/ |
- | |
337 | void SCU_TIMPresConfig(u8 TIMx, u16 Prescaler) |
- | |
338 | { |
- | |
339 | if (TIMx==SCU_TIM01) /*TIM01 Prescaler configuration*/ |
- | |
340 | SCU->SCR1 = Prescaler&0xFFFF; |
- | |
341 | else |
- | |
342 | SCU->SCR2 = Prescaler&0xFFFF; /*TIM23 Prescaler configuration*/ |
- | |
343 | } |
- | |
344 | 322 | ||
345 | /******************************************************************************* |
323 | /******************************************************************************* |
346 | * Function Name : SCU_USBCLKConfig |
324 | * Function Name : SCU_USBCLKConfig |
347 | * Description : Configures the clock source for the 48MHz USBCLK |
325 | * Description : Configures the clock source for the 48MHz USBCLK |
348 | * Input : USBCLK_Source: SCU_USBCLK_MCLK,SCU_USBCLK_MCLK2 or SCU_USBCLK_EXT |
326 | * Input : USBCLK_Source: SCU_USBCLK_MCLK,SCU_USBCLK_MCLK2 or SCU_USBCLK_EXT |
Line 657... | Line 635... | ||
657 | if (NewState==ENABLE) |
635 | if (NewState==ENABLE) |
658 | SCU->SCR0 |=0x1; |
636 | SCU->SCR0 |=0x1; |
659 | else SCU->SCR0 &=~0x1; |
637 | else SCU->SCR0 &=~0x1; |
660 | } |
638 | } |
Line -... | Line 639... | ||
- | 639 | ||
- | 640 | ||
- | 641 | /******************************************************************************* |
|
- | 642 | * Function Name : SCU_EMIByte_Select_Pinconfig |
|
- | 643 | * Description : Enable or Disable the Byte selection pins behaviour(LFBGA only) |
|
- | 644 | * Input : NewState : ENABLE or DISABLE |
|
- | 645 | * Output : None |
|
- | 646 | * Return : None |
|
- | 647 | *******************************************************************************/ |
|
- | 648 | void SCU_EMIByte_Select_Pinconfig(FunctionalState NewState) |
|
- | 649 | { |
|
- | 650 | if (NewState==ENABLE) |
|
- | 651 | SCU->GPIOEMI |= 0x04; |
|
- | 652 | else |
|
- | 653 | SCU->GPIOEMI &=~0x04; |
|
- | 654 | ||
- | 655 | } |
|
- | 656 | ||
- | 657 | /******************************************************************************* |
|
- | 658 | * Function Name : SCU_EMIclock_Pinconfig |
|
- | 659 | * Description : Enable or Disable the BCLK pin clock driving (LFBGA only) |
|
- | 660 | * Input : NewState : ENABLE or DISABLE |
|
- | 661 | * Output : None |
|
- | 662 | * Return : None |
|
- | 663 | *******************************************************************************/ |
|
- | 664 | ||
- | 665 | void SCU_EMIclock_Pinconfig(FunctionalState NewState) |
|
- | 666 | { |
|
- | 667 | if (NewState==DISABLE) |
|
- | 668 | SCU->GPIOEMI |= 0x02; |
|
- | 669 | else |
|
- | 670 | SCU->GPIOEMI &=~0x02; |
|
- | 671 | ||
- | 672 | } |
|
- | 673 | ||
661 | 674 |