1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include "at32f403a_407.h"
- #include "FreeRTOS.h"
- #include "task.h"
- #include "port.h"
- #include "mb.h"
- #include "mbport.h"
- #include "mux.h"
- #include <stdbool.h>
- static void prvvTIMERExpiredISR( void );
- BOOL xMBPortTimersInit( USHORT usTim1Timerout50us )
- {
- crm_clocks_freq_type crm_clocks_freq_struct = {0};
-
- crm_clocks_freq_get(&crm_clocks_freq_struct);
-
- nvic_irq_disable(TMR7_GLOBAL_IRQn);
-
- crm_periph_clock_enable(CRM_TMR7_PERIPH_CLOCK, TRUE);
- tmr_base_init(TMR7, (usTim1Timerout50us * 50) - 1, (crm_clocks_freq_struct.ahb_freq / 1000000) - 1);
- tmr_cnt_dir_set(TMR7, TMR_COUNT_UP);
-
- NVIC_ClearPendingIRQ(TMR7_GLOBAL_IRQn);
- nvic_irq_enable(TMR7_GLOBAL_IRQn, 5, 0);
-
- return TRUE;
- }
- /* Create an ISR which is called whenever the timer has expired. This function
- * must then call pxMBPortCBTimerExpired( ) to notify the protocol stack that
- * the timer has expired.
- */
- static void prvvTIMERExpiredISR( void )
- {
- ( void )pxMBPortCBTimerExpired( );
- }
- //
- void TMR7_GLOBAL_IRQHandler(void)
- {
- if(tmr_flag_get(TMR7, TMR_OVF_FLAG) != RESET)
- {
- tmr_flag_clear(TMR7, TMR_OVF_FLAG);
- vMBPortSetWithinException(TRUE);
- prvvTIMERExpiredISR();
- leds[RX_G].state = LED_OFF;
- vMBPortSetWithinException(FALSE);
- }
- }
- //
- void vMBPortTimerClose( void )
- {
- tmr_interrupt_enable(TMR7, TMR_OVF_INT, FALSE);
- tmr_counter_enable(TMR7, FALSE);
- }
- //
- void vMBPortTimersEnable()
- {
- tmr_flag_clear(TMR7, TMR_OVF_FLAG);
- tmr_interrupt_enable(TMR7, TMR_OVF_INT, TRUE);
- tmr_counter_value_set(TMR7, 0);
- tmr_counter_enable(TMR7, TRUE);
- }
- //
- void vMBPortTimersDisable()
- {
- tmr_flag_clear(TMR7, TMR_OVF_FLAG);
- tmr_interrupt_enable(TMR7, TMR_OVF_INT, FALSE);
- tmr_counter_value_set(TMR7, 0);
- tmr_counter_enable(TMR7, FALSE);
- }
- //
- void vMBPortTimersDelay( USHORT usTimeOutMS )
- {
- vTaskDelay( usTimeOutMS / portTICK_RATE_MS );
- }
|