NetBurner 3.5.7
PDF Version
dCDC_NCM Class Reference

USB CDC NCM Device Class for Ethernet-over-USB. More...

#include <usbd_cdc_ncm.h>

Inherits nbrtos::USB::Device, and nbrtos::USB::Device.

Public Member Functions

 dCDC_NCM (nbrtos::USB::Ctlr *parent, const usb_dev_t *desc, const usb_cfg_t *cfg, const nbrtos::USB::StrDescTbl *strTbl)
 Constructor.
 
void SetMACAddress (const MACADR &mac)
 Set the MAC address for this NCM interface.
 
void SetLinkSpeed (uint32_t speedMbps)
 Set the link speed in Mbps.
 
ncm_state_t GetNcmState () const
 Get the current NCM state.
 
bool IsDataReady () const
 Check if NCM is ready for data transfer.
 
 dCDC_NCM (nbrtos::USB::Ctlr *parent, const usb_dev_t *desc, const usb_cfg_t *cfg, const nbrtos::USB::StrDescTbl *strTbl)
 Constructor.
 
void SetMACAddress (const MACADR &mac)
 Set the MAC address for this NCM interface.
 
void SetLinkSpeed (uint32_t speedMbps)
 Set the link speed in Mbps.
 
ncm_state_t GetNcmState () const
 Get the current NCM state.
 
bool IsDataReady () const
 Check if NCM is ready for data transfer.
 
uint32_t GetTxFramesOk () const
 Get TX frames transmitted successfully.
 
uint32_t GetRxFramesOk () const
 Get RX frames received successfully.
 
uint32_t GetTxFramesError () const
 Get TX frame errors.
 
uint32_t GetRxFramesError () const
 Get RX frame errors.
 
uint32_t GetRxNoBuffer () const
 Get RX no buffer count.
 
uint32_t GetTxQueueOverflow () const
 Get TX queue overflow count.
 
int GetTxQueueDepth () const
 Get current TX queue depth.
 
uint32_t GetNtbMaxSize () const
 Get max NTB size.
 

Protected Member Functions

int QueueRx ()
 Queue a receive operation on the bulk OUT endpoint.
 
int ParseNtb16 (uint8_t *ntb, uint32_t length)
 Parse received NTB and extract datagrams.
 
int BuildNtb16 (uint8_t *destBuf, uint8_t *frameData, uint32_t frameLen)
 Build NTB16 for transmission.
 
int SendNetworkConnectionNotification (bool connected)
 Send NETWORK_CONNECTION notification.
 
int SendSpeedChangeNotification ()
 Send CONNECTION_SPEED_CHANGE notification.
 
int QueueRx ()
 Queue a receive operation on the bulk OUT endpoint.
 
bool TxQueueEnqueue (PoolPtr pp)
 Add a frame to the TX queue.
 
PoolPtr TxQueueDequeue ()
 Remove a frame from the TX queue.
 
bool TxQueueEmpty () const
 Check if TX queue is empty.
 
bool TxQueueFull () const
 Check if TX queue is full.
 
void TxStartNextFrame ()
 Start transmitting the next frame from queue.
 
int ParseNtb16 (uint8_t *ntb, uint32_t length)
 Parse received NTB and extract datagrams.
 
int BuildNtb16 (uint8_t *destBuf, uint8_t *frameData, uint32_t frameLen)
 Build NTB16 for transmission.
 
int SendNetworkConnectionNotification (bool connected)
 Send NETWORK_CONNECTION notification.
 
int SendSpeedChangeNotification ()
 Send CONNECTION_SPEED_CHANGE notification.
 

Friends

class NcmInterfaceBlock
 
void UserMain (void *pd)
 Application entry point.
 
void UserMain (void *pd)
 Application entry point.
 

Detailed Description

USB CDC NCM Device Class for Ethernet-over-USB.

This class implements a USB CDC NCM device that provides virtual network interface functionality. When connected to a Windows 10+ host, the device enumerates automatically with the native NCM driver, enabling Ethernet-like communication over USB.

Member Function Documentation

◆ TxQueueDequeue()

PoolPtr dCDC_NCM::TxQueueDequeue ( )
protected

Remove a frame from the TX queue.

Returns
PoolPtr or nullptr if queue empty

◆ TxQueueEnqueue()

bool dCDC_NCM::TxQueueEnqueue ( PoolPtr pp)
protected

Add a frame to the TX queue.

Returns
true if queued, false if queue full

Friends And Related Symbol Documentation

◆ UserMain [1/2]

void UserMain ( void * pd)
friend

Application entry point.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

UserMain Task

UserMain Task This is the first task to be executed and will create the UDP Reader Task.

UserMain This is the first task to be executed and will create the UDP Reader Task.

UserMain

Main entry point for the program

Initializes the network stack and starts the HTTP server to handle multipart form submissions. All form processing logic is in formcode.cpp.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

◆ UserMain [2/2]

void UserMain ( void * pd)
friend

Application entry point.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Application entry point.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Application entry point.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Application entry point.

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Application entry point.

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Application entry point.

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

Application entry point.

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

Application entry point.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

UserMain Task

UserMain Task This is the first task to be executed and will create the UDP Reader Task.

UserMain This is the first task to be executed and will create the UDP Reader Task.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

UserMain Task

UserMain Task This is the first task to be executed and will create the UDP Reader Task.

UserMain This is the first task to be executed and will create the UDP Reader Task.

UserMain

Main entry point for the program

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

UserMain Task

UserMain Task This is the first task to be executed and will create the UDP Reader Task.

UserMain This is the first task to be executed and will create the UDP Reader Task.

UserMain

Main entry point for the program

Application entry point.

Initializes the network stack and starts the HTTP server to handle multipart form submissions. All form processing logic is in formcode.cpp.

UserMain

Main entry point for the example

UserMain

Main entry point of the example

UserMain

Main entry point to the example

UserMain

The main task

UserMain, the entry point of the example

Initializes networking and the web server, then checks if a second partition already exists. If not, prompts the user and creates one. Finally displays the file tree for partition 0.

Initializes the system, creates the handler task, configures the GPIO pins, and sets up the pin interrupt. Then enters a loop that periodically prints the transition count and current pin state.

Parameters
pdPointer to optional user data (unused)

Initializes the NetBurner system, starts the web server, and enters the main application loop. The application performs the following:

Initialization Sequence:

  1. Initialize network stack (TCP/IP, Ethernet)
  2. Enable system diagnostics (for development/debugging)
  3. Start HTTP web server on port 80
  4. Wait for network to become active (5 second timeout)
  5. Enable remote console for debugging
  6. Initialize QDC peripheral and configure encoder pins

Main Loop:

  • Prints encoder position and revolution count every second
  • Runs continuously, serving web requests and updating display

The web interface (index.html) independently polls /count.json every 20ms for real-time encoder display.

Console Output Format:

  • With index: "<seconds> : QDC <position> <revolutions>"
  • Without index: "<seconds> : QDC <position>"
Parameters
pdPointer to optional parameter data (not used)
Note
This function never returns - it runs indefinitely in the main loop

UserMain - Entry point for NetBurner applications (not main())

Parameters
pdPointer to user data (typically unused)

Initializes the NetBurner system, configures SEMC for external SRAM, runs comprehensive memory tests, and demonstrates various access patterns.

The application flow:

  1. Initialize NetBurner system
  2. Initialize SEMC Clocks
  3. Configure SEMC based on selected bus width
  4. Initialize memory pointers
  5. Enter main loop
Parameters
pdUnused parameter (required by NetBurner framework)

Main entry point

Initializes the USB NCM interface and configures networking. The NCM interface appears as a standard Ethernet adapter on the host.


UserMain

UserMain

Main entry point of program

UserMain is the entry point for NetBurner applications (not main()). This function initializes all system components and starts the main application loop.

Initialization sequence:

  1. init() - Initialize the TCP/IP network stack
  2. EnableSystemDiagnostics() - Enable runtime diagnostics
  3. StartHttp() - Start the web server on port 80
  4. WaitForActiveNetwork() - Wait for network link
  5. Configure command processor callbacks
  6. Start command processor listening on port 23 (Telnet)
  7. Enter main loop with periodic status output
Parameters
pdPointer to task data (unused in this example)
Note
The SNMP agent starts automatically when SnmpServlet is instantiated
The main loop delays for 20 ticks (~1 second at default tick rate)

UserMain

Main entry point for example

UserMain Task

UserMain Task This is the first task to be executed and will create the UDP Reader Task.

UserMain This is the first task to be executed and will create the UDP Reader Task.

UserMain

Main entry point for the program

Initializes the network stack and starts the HTTP server to handle multipart form submissions. All form processing logic is in formcode.cpp.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.

Create the pin change handler task

Parameters:

  • PinChangeTask: Function pointer to task entry point
  • MAIN_PRIO - 1: Priority slightly higher than main task (lower number = higher priority)
  • "PinChangeTask": Task name for debugging/diagnostics

Higher priority ensures the task runs promptly when semaphore is posted.

Register the pin interrupt handler

Parameters:

  • Pins[irq_pin_num]: The pin to monitor for edges
  • 0: Edge detection mode 0 = Both edges (rising and falling) 1 = Rising edge only (low-to-high) 2 = Falling edge only (high-to-low)
  • NotifyFunc: Callback function to invoke on edge detection

After this call, any edge transition on Pin 30 will trigger NotifyFunc to be called in interrupt context.

The SEMC_CLK_ROOT clock configuration options are: SEMC alternative clock select 0 = PLL2 PFD2 will be selected as alternative clock for SEMC root clock (396MHz) 1 = PLL3 PFD1 will be selected as alternative clock for SEMC root clock (665.62MHz) NOTE: SEMC_CLK_ROOT can be selected as a source for FLEXSPI_CLK_ROOT

SEMC clock source select 0 = Periph_clk output will be used as SEMC clock root 1 = SEMC alternative clock will be used as SEMC clock root

Set up a file descriptor (FD) set so we can select() on the serial ports. Once configured, the select() function will block until activity is detected on a FD (a serial port in this example), or a timeout occurs (set to 1 second here). If a timeout does occur, we simply go back to the select() function and wait for more activity. The "write" and "error" FD sets of the select() function are not used and set to nullptr; only read operations caused by the items in read_fds will cause select() to exit. A timeout value of 0 would disable the timeout, and select() would wait forever.

Detailed description of how select() works: The select() function operates on a bit mapped field of 64 bits. In this example, the bit field is read_fds. When select() is called, read_fds represents a MASK of which file descriptors to check. AFTER select() exits, read_fds contains the STATUS of which file descriptors have pending events. This means that read_fds must be reinitialized to contain MASK information each time before select() is called. FD_ZERO, FD_SET, and FD_ISSET are macros that execute very fast.


The documentation for this class was generated from the following files: