CC26xx Driver Library
[cpu.h] CPU

Functions

uint32_t CPUcpsid (void)
 Disable all external interrupts. More...
 
uint32_t CPUprimask (void)
 Get the current interrupt state. More...
 
uint32_t CPUcpsie (void)
 Enable all external interrupts. More...
 
uint32_t CPUbasepriGet (void)
 Get the interrupt priority disable level. More...
 
void CPUdelay (uint32_t ui32Count)
 Provide a small non-zero delay using a simple loop counter. More...
 
static void CPUwfi (void)
 Wait for interrupt. More...
 
static void CPUwfe (void)
 Wait for event. More...
 
static void CPUsev (void)
 Send event. More...
 
static void CPUbasepriSet (uint32_t ui32NewBasepri)
 Update the interrupt priority disable level. More...
 
static void CPU_WriteBufferDisable (void)
 Disable CPU write buffering (recommended for debug purpose only). More...
 
static void CPU_WriteBufferEnable (void)
 Enable CPU write buffering (default setting). More...
 

Detailed Description

Introduction

The CPU API provides a set of functions performing very low-level control of the system CPU. All functions in this API are written in assembler in order to either access special registers or avoid any compiler optimizations. Each function exists in several compiler specific versions: One version for each supported compiler.

Function Documentation

static void CPU_WriteBufferDisable ( void  )
inlinestatic

Disable CPU write buffering (recommended for debug purpose only).

This function helps debugging "bus fault crashes". Disables write buffer use during default memory map accesses.

This causes all bus faults to be precise bus faults but decreases the performance of the processor because the stores to memory have to complete before the next instruction can be executed.

Returns
None
See also
CPU_WriteBufferEnable()
397 {
399 }
static void CPU_WriteBufferEnable ( void  )
inlinestatic

Enable CPU write buffering (default setting).

Re-enables write buffer during default memory map accesses if CPU_WriteBufferDisable() has been used for bus fault debugging.

Returns
None
See also
CPU_WriteBufferDisable()
415 {
417 }
uint32_t CPUbasepriGet ( void  )

Get the interrupt priority disable level.

Use this function to get the level of priority that will disable interrupts with a lower priority level.

Returns
Returns the value of the BASEPRI register.

Referenced by IntPriorityMaskGet().

278 {
279  // This function is written in assembly. See cpu.c for compiler specific implementation.
280 }
static void CPUbasepriSet ( uint32_t  ui32NewBasepri)
inlinestatic

Update the interrupt priority disable level.

Use this function to change the level of priority that will disable interrupts with a lower priority level.

Parameters
ui32NewBasepriis the new basis priority level to set.
Returns
None

Referenced by IntPriorityMaskSet().

338 {
339  // This function is written in assembly. See cpu.h for compiler specific implementation.
340 }
uint32_t CPUcpsid ( void  )

Disable all external interrupts.

Use this function to disable all system interrupts. This function is implemented as a wrapper function for the CPSID instruction.

Returns
Returns the state of PRIMASK on entry

Referenced by IntMasterDisable(), and SysCtrlSystemReset().

69 {
70  // This function is written in assembly. See cpu.c for compiler specific implementation.
71 }
uint32_t CPUcpsie ( void  )

Enable all external interrupts.

Use this function to enable all system interrupts. This function is implemented as a wrapper function for the CPSIE instruction.

Returns
Returns the state of PRIMASK on entry.

Referenced by IntMasterEnable().

207 {
208  // This function is written in assembly. See cpu.c for compiler specific implementation.
209 }
void CPUdelay ( uint32_t  ui32Count)

Provide a small non-zero delay using a simple loop counter.

This function provides means for generating a constant length delay. It is written in assembly to keep the delay consistent across tool chains, avoiding the need to tune the delay based on the tool chain in use.

Note
It is not recommended using this function for long delays.

Notice that interrupts can affect the delay if not manually disabled in advance.

The delay depends on where code resides and the path for code fetching:

  • Code in flash, cache enabled, prefetch enabled : 4 cycles per loop (Default)
  • Code in flash, cache enabled, prefetch disabled : 5 cycles per loop
  • Code in flash, cache disabled : 7 cycles per loop
  • Code in SRAM : 6 cycles per loop
  • Code in GPRAM : 3 cycles per loop
Note
If using an RTOS, consider using RTOS provided delay functions because these will not block task scheduling and will potentially save power.

Calculate delay count based on the wanted delay in microseconds (us):

  • ui32Count = [delay in us] * [CPU clock in MHz] / [cycles per loop]

Example: 250 us delay with code in flash and with cache and prefetch enabled:

  • ui32Count = 250 * 48 / 4 = 3000
Parameters
ui32Countis the number of delay loop iterations to perform. Number must be greater than zero.
Returns
None

Referenced by AESReadFromKeyStore(), AESWaitForIRQFlags(), CRYPTOAesCbc(), CRYPTOAesEcb(), CRYPTOAesLoadKey(), CRYPTOCcmAuthEncrypt(), CRYPTOCcmAuthEncryptResultGet(), CRYPTOCcmInvAuthDecrypt(), CRYPTOCcmInvAuthDecryptResultGet(), I2CMasterControl(), PKAClearPkaRam(), and SHA2WaitForIRQFlags().

344 {
345  // This function is written in assembly. See cpu.c for compiler specific implementation.
346 }
uint32_t CPUprimask ( void  )

Get the current interrupt state.

Use this function to retrieve the current state of the interrupts. This function is implemented as a wrapper function returning the state of PRIMASK.

Returns
Returns the state of the PRIMASK (indicating whether interrupts are enabled or disabled).
140 {
141  // This function is written in assembly. See cpu.c for compiler specific implementation.
142 }
static void CPUsev ( void  )
inlinestatic

Send event.

Use this function to let the System CPU send an event. This function is implemented as a wrapper function for the SEV instruction.

Returns
None
288 {
289  // This function is written in assembly. See cpu.h for compiler specific implementation.
290 }
static void CPUwfe ( void  )
inlinestatic

Wait for event.

Use this function to let the System CPU wait for the next event. This function is implemented as a wrapper function for the WFE instruction.

Returns
None
241 {
242  // This function is written in assembly. See cpu.h for compiler specific implementation.
243 }
static void CPUwfi ( void  )
inlinestatic

Wait for interrupt.

Use this function to let the System CPU wait for the next interrupt. This function is implemented as a wrapper function for the WFI instruction.

Returns
None

Referenced by PRCMDeepSleep(), and PRCMSleep().

194 {
195  // This function is written in assembly. See cpu.h for compiler specific implementation.
196 }