First Publish. Works fine.

Dependents:   unzen_sample_nucleo_f746 unzen_delay_sample_nucleo_f746 skeleton_unzen_nucleo_f746 ifmag_noise_canceller ... more

Nucleo F746ZG用のオーディオ・フレームワークです。フレームワーク地震の詳細は『雲仙』オーディオ・フレームワークを参照してください。

参考リンク

  • skeleton_unzen_nucleo_f746 Nucleo F746ZGおよびUI基板を使う場合のスケルトンプログラム。F746を使う方はここから読み始めると良いでしょう。
Revision:
12:5e73a102d809
Parent:
11:5f91f55065c1
--- a/unzen.cpp	Sun May 08 09:56:29 2016 +0000
+++ b/unzen.cpp	Thu May 12 22:13:04 2016 +0000
@@ -8,6 +8,8 @@
 {
     Framework::Framework()
     {
+            // setup handle for the interrupt handler
+        Framework::_fw = this;
 
             // Clear all buffers        
         _tx_int_buffer[0] = NULL;
@@ -31,6 +33,7 @@
         _post_process_callback = NULL;
         
         _process_callback = NULL;
+
         
             // Initialy block(buffer) size is 1.
         set_block_size( 1 );
@@ -132,8 +135,18 @@
         return no_error;
     }
 
-    void Framework::start()
+    void Framework::start(
+                    void (* init_cb ) (unsigned int),
+                    void (* process_cb ) (float[], float[], float[], float[], unsigned int)
+                    )
     {
+            // if needed, call the initializer
+        if ( init_cb )
+            init_cb( _block_size );
+            
+            // register the signal processing callback
+        _process_callback = process_cb;
+        
             // synchronize with Word select signal, to process RX/TX as atomic timing.
         hal_i2s_pin_config_and_wait_ws();
         hal_i2s_start();
@@ -142,18 +155,11 @@
     void Framework::set_i2s_irq_priority( unsigned int pri )
     {
         NVIC_SetPriority(hal_get_process_irq_id(), pri);  // must be higher than PendSV of mbed-RTOS
-        
     }
     
     void Framework::set_process_irq_priority( unsigned int pri )
     {
         NVIC_SetPriority(hal_get_i2s_irq_id(), pri);      // must be higher than process IRQ
-
-    }
-
-    void Framework::set_process_callback( void (* cb ) (float[], float[], float[], float[], unsigned int))
-    { 
-        _process_callback = cb;
     }
 
     void Framework::set_pre_interrupt_callback( void (* cb ) (void))
@@ -279,16 +285,16 @@
     
     void Framework::_process_irq_handler()
     {
-        Framework::get()->_do_process_irq();
+        Framework::_fw->_do_process_irq();
     }
     
     void Framework::_i2s_irq_handler()
     {
-        Framework::get()->_do_i2s_irq();
+        Framework::_fw->_do_i2s_irq();
     }
      
      
-     
+    Framework * Framework::_fw; 
  
 }
     
\ No newline at end of file