35 #include "derivative.h"
38 void port_enable(uint8_t PortMask)
40 SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
42 if(PortMask & PORTB_EN_MASK)
44 SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
46 if(PortMask & PORTC_EN_MASK)
48 SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
50 if(PortMask & PORTD_EN_MASK)
52 SIM_SCGC5 |= SIM_SCGC5_PORTD_MASK;
54 if(PortMask & PORTE_EN_MASK)
56 SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
64 PORTA_PCR20 = (uint32_t)((PORTA_PCR20 & ~0x01000000) | 0x0700);
65 PORTA_PCR4 = (uint32_t)((PORTA_PCR4 & ~0x01000000) | 0x0700);
67 NVIC->IP[1] &= (uint32_t)~0x00FF0000;
77 SCB->SCR &= (uint32_t)~(SCB_SCR_SLEEPDEEP_MASK | SCB_SCR_SLEEPONEXIT_MASK);
82 SCB->SCR &= (uint32_t)~(SCB_SCR_SLEEPDEEP_MASK);
83 SCB->SCR |= (uint32_t)SCB_SCR_SLEEPONEXIT_MASK;
88 void cpu_stop(Type_StopMode StopMode)
91 LLWU_F1 = (uint8_t)0xFF;
92 LLWU_F2 = (uint8_t)0xFF;
94 LLWU_FILT1 |= LLWU_FILT1_FILTF_MASK;
95 LLWU_FILT2 |= LLWU_FILT2_FILTF_MASK;
97 SCB->SCR |= (uint32_t)(SCB_SCR_SLEEPDEEP_MASK);
101 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x00);
102 SMC_STOPCTRL = (uint8_t)((SMC_STOPCTRL & ~SMC_STOPCTRL_PSTOPO_MASK) | 0x00);
106 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x00);
107 SMC_STOPCTRL = (uint8_t)((SMC_STOPCTRL & ~SMC_STOPCTRL_PSTOPO_MASK) | 0x40);
111 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x00);
112 SMC_STOPCTRL = (uint8_t)((SMC_STOPCTRL & ~SMC_STOPCTRL_PSTOPO_MASK) | 0x80);
116 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x02);
120 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x03);
124 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x04);
125 SMC_STOPCTRL = (uint8_t)((SMC_STOPCTRL & ~SMC_STOPCTRL_VLLSM_MASK) | 0x40);
126 SMC_STOPCTRL = SMC_STOPCTRL_PORPO_MASK;
130 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x04);
131 SMC_STOPCTRL = (uint8_t)((SMC_STOPCTRL & ~SMC_STOPCTRL_VLLSM_MASK) | 0x01);
135 SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x04);
136 SMC_STOPCTRL = (uint8_t)((SMC_STOPCTRL & ~SMC_STOPCTRL_VLLSM_MASK) | 0x03);
139 default: SMC_PMCTRL = (uint8_t)((SMC_PMCTRL & ~SMC_PMCTRL_STOPM_MASK) | 0x00);
142 SCB->SCR &= (uint32_t)~(SCB_SCR_SLEEPONEXIT_MASK);
144 (void)(SMC_PMCTRL == 0);
157 __asm(
" mrs r0, PRIMASK\n"
173 __asm(
" mrs r0, PRIMASK\n"
183 void cpu_reboot_src(
void) {
184 uint8_t source0, source1;
188 if(source0 & (RCM_SRS0_POR_MASK | RCM_SRS0_LVD_MASK)) {
189 printf(
"Reset due to POR with LVD.\n\r");
190 }
else if(source0 & RCM_SRS0_POR_MASK){
191 printf(
"Reset due to POR.\n\r");
192 }
else if(source0 & RCM_SRS0_LVD_MASK){
193 printf(
"Reset due to LVD.\n\r");
194 }
else if(source0 & RCM_SRS0_WDOG_MASK){
195 printf(
"Reset due to Watchdog.\n\r");
196 }
else if(source0 & (RCM_SRS0_PIN_MASK | RCM_SRS0_WAKEUP_MASK)){
197 printf(
"Reset due to RST Wakeup.\n\r");
198 }
else if(source0 & RCM_SRS0_WAKEUP_MASK){
199 printf(
"Reset due to Wakeup.\n\r");
200 }
else if(source0 & RCM_SRS0_PIN_MASK){
201 printf(
"Reset due to RST.\n\r");
202 }
else if(source0 & RCM_SRS0_LOC_MASK){
203 printf(
"Reset due to LOC.\n\r");
204 }
else if(source0 & RCM_SRS0_LOL_MASK){
205 printf(
"Reset due to LOL.\n\r");
206 }
else if(source1 & RCM_SRS1_LOCKUP_MASK){
207 printf(
"Reset due to LOCKUP.\n\r");
208 }
else if(source1 & RCM_SRS1_SW_MASK){
209 printf(
"Reset due to Software.\n\r");
210 }
else if(source1 & RCM_SRS1_MDM_AP_MASK){
211 printf(
"Reset due to MDM_AP.\n\r");
212 }
else if(source1 & RCM_SRS1_SACKERR_MASK){
213 printf(
"Reset due to SACKERR.\n\r");
215 printf(
"Unknown reset source.\n\r");
221 void NMI_Handler(
void)
231 void Default_Handler()
233 printf(
"Default Handler - BREAKPOINT");
237 void Default_Handler_NMI()
239 printf(
"NMI Handler - BREAKPOINT");
243 void Default_Handler_HardFault()
245 printf(
"HardFault Handler - BREAKPOINT");
249 void Default_Handler_SVC()
251 printf(
"SVC Handler - BREAKPOINT");
255 void Default_Handler_PendSV()
257 printf(
"PendSV Handler - BREAKPOINT");
261 void Default_Handler_SysTick()
263 printf(
"Systick Handler - BREAKPOINT");
267 void Default_Handler_DMA0()
269 printf(
"DMA0 Handler - BREAKPOINT");
273 void Default_Handler_DMA1()
275 printf(
"DMA1 Handler - BREAKPOINT");
279 void Default_Handler_DMA2()
281 printf(
"DMA2 Handler - BREAKPOINT");
285 void Default_Handler_DMA3()
287 printf(
"DMA3 Handler - BREAKPOINT");
291 void Default_Handler_MCM()
293 printf(
"MCM Handler - BREAKPOINT");
297 void Default_Handler_FTFL()
299 printf(
"FTFL Handler - BREAKPOINT");
303 void Default_Handler_PMC()
305 printf(
"PMC Handler - BREAKPOINT");
309 void Default_Handler_LLW()
311 printf(
"LLW Handler - BREAKPOINT");
315 void Default_Handler_I2C0()
317 printf(
"I2C0 Handler - BREAKPOINT");
321 void Default_Handler_I2C1()
323 printf(
"I2C1 Handler - BREAKPOINT");
327 void Default_Handler_SPI0()
329 printf(
"SPI0 Handler - BREAKPOINT");
333 void Default_Handler_SPI1()
335 printf(
"SPI1 Handler - BREAKPOINT");
339 void Default_Handler_UART0()
341 printf(
"UART0 Handler - BREAKPOINT");
345 void Default_Handler_UART1()
347 printf(
"UART1 Handler - BREAKPOINT");
351 void Default_Handler_UART2()
353 printf(
"UART2 Handler - BREAKPOINT");
357 void Default_Handler_ADC0()
359 printf(
"ADC0 Handler - BREAKPOINT");
363 void Default_Handler_CMP0()
365 printf(
"CMP0 Handler - BREAKPOINT");
369 void Default_Handler_TPM0()
371 printf(
"TPM0 Handler - BREAKPOINT");
375 void Default_Handler_TPM1()
377 printf(
"TPM1 Handler - BREAKPOINT");
381 void Default_Handler_TPM2()
383 printf(
"TPM2 Handler - BREAKPOINT");
387 void Default_Handler_RTC_Alarm()
389 printf(
"RTC Alarm Handler - BREAKPOINT");
393 void Default_Handler_RTC_Seconds()
395 printf(
"RTC Seconds Handler - BREAKPOINT");
399 void Default_Handler_PIT()
401 printf(
"PIT Handler - BREAKPOINT");
405 void Default_Handler_USBOTG()
407 printf(
"USBOTG Handler - BREAKPOINT");
411 void Default_Handler_DAC0()
413 printf(
"DAC0 Handler - BREAKPOINT");
417 void Default_Handler_TSI0()
419 printf(
"TSI0 Handler - BREAKPOINT");
423 void Default_Handler_MCG()
425 printf(
"MCG Handler - BREAKPOINT");
429 void Default_Handler_LPTimer()
431 printf(
"LPTMR Handler - BREAKPOINT");
435 void Default_Handler_PORTA()
437 printf(
"PORTA Handler - BREAKPOINT");
441 void Default_Handler_PORTD()
443 printf(
"PORTD Handler - BREAKPOINT");
448 void HardFault_Handler()
__attribute__ ((weak, alias("Default_Handler_HardFault")));
449 void SVC_Handler()
__attribute__ ((weak, alias("Default_Handler_SVC")));
450 void PendSV_Handler()
__attribute__ ((weak, alias("Default_Handler_PendSV")));
451 void SysTick_Handler()
__attribute__ ((weak, alias("Default_Handler_SysTick")));
452 void DMA0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_DMA0")));
453 void DMA1_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_DMA1")));
454 void DMA2_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_DMA2")));
455 void DMA3_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_DMA3")));
456 void LLWU_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_LLW")));
457 void I2C0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_I2C0")));
458 void I2C1_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_I2C1")));
459 void SPI0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_SPI0")));
460 void SPI1_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_SPI1")));
461 void UART0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_UART0")));
462 void UART1_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_UART1")));
463 void UART2_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_UART2")));
464 void ADC0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_ADC0")));
465 void CMP0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_CMP0")));
466 void TPM0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_TPM0")));
467 void TPM1_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_TPM1")));
468 void TPM2_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_TPM2")));
469 void RTC_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_RTC_Alarm")));
470 void RTC_Seconds_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_RTC_Seconds")));
471 void PIT_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_PIT")));
472 void USB0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_USBOTG")));
473 void DAC0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_DAC0")));
474 void TSI0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_TSI0")));
475 void MCG_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_MCG")));
476 void LPTMR0_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_LPTimer")));
477 void PORTA_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_PORTA")));
478 void PORTD_IRQHandler()
__attribute__ ((weak, alias("Default_Handler_PORTD")));
#define __attribute__(nothing)
Define attribute to nothing since it isn't handled by IAR.
#define RCM
Peripheral RCM base pointer.
unsigned long cpu_cpsid(void)
Disables all CPU interrupts.
unsigned long cpu_cpsie(void)
Enables all CPU interrupts.