1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include "ad0x0_timman.h"
- #include "main.h"
- #include <string.h>
- //#include "ad0x0_spi.h"
- ad0x0_timman_s ad0x0_timmans[AD0X0_TIMMAN_QCOUNT];
- void ad0x0_timman_init(void){
- for(int16_t i=0;i<AD0X0_TIMMAN_QCOUNT;i++){
- ad0x0_timmans[i].time_cur_ms=ad0x0_timmans[i].time_init_ms=0;
- ad0x0_timmans[i].p_func=NULL;
- }
- TIM4->CR1|=TIM_CR1_CEN;
- }
- void ad0x0_timman_remove(uint8_t (*p_func)(void)){
- /*бля ну да, проверка на переполнение нужна...*/
- //ищем эл-т с неприсвоенной функцией и считаем, что это свободный
- ad0x0_timman_s *p=ad0x0_timmans;
- uint8_t c=AD0X0_TIMMAN_QCOUNT;
- int was_masked=__disable_irq();
- if(was_masked){
- __ASM("nop");
- }
- while(c--){
- if(p->p_func==p_func){
- p->p_func=NULL;
- if(!was_masked)__enable_irq();
- return;
- }
- p++;
- }
- //переполнение!!!!!!!!!!!!!!!! тут надо точку останова
- __enable_irq();
- }
- void ad0x0_timman_add(int16_t _ms,uint8_t (*_p_func)(void)){
- /*бля ну да, проверка на переполнение нужна...*/
- //ищем эл-т с неприсвоенной функцией и считаем, что это свободный
- ad0x0_timman_s *p=ad0x0_timmans;
- uint8_t c=AD0X0_TIMMAN_QCOUNT;
- int was_masked=__disable_irq();
- if(was_masked){
- __ASM("nop");
- }
- while(c--){
- if(!p->p_func){
- p->time_cur_ms=p->time_init_ms=_ms;
- p->p_func=_p_func;
- if(!was_masked)__enable_irq();
- return;
- }
- p++;
- }
- //переполнение!!!!!!!!!!!!!!!! тут надо точку останова
- __enable_irq();
- }
- void ad0x0_timman_tickms(void){
- //ADINT_HIGH;
- ad0x0_timman_s *p=ad0x0_timmans;
- uint8_t c=AD0X0_TIMMAN_QCOUNT;
- while(c--){
- if(p->p_func){
- if(!(p->time_cur_ms--)){
- if(p->p_func())p->p_func=NULL;
- p->time_cur_ms=p->time_init_ms;
- }
- }
- p++;
- }
- //ADINT_LOW;
- }
|