Программа примерно такая:
CODE
app.c
{
....
int main(void)
{
while (1) {..DataIN_OUT_toUSB(...) }
}
....
}
usbd_cdc_vcp.c
{
....
DataIN_OUT_toUSB(...){...}
....
}
Чтобы опрос АЦП и передача шли через равные интервалы, я решил сделать прерывание от таймера ( с интервалом ~ 2 мс - времени должно с запасом хватить на преобразование ) и из него вызывать функцию передачи :
CODE
app.c
{
....
int main(void)
{
while (1) {}
}
....
}
usbd_cdc_vcp.c
{
....
DataIN_OUT_toUSB(...){...}
....
void TIM7_IRQHandler(void)
{
TIM7->SR &= ~TIM_SR_UIF; // reset interrupt flag
DataIN_OUT_toUSB(...)
TIM_Cmd(TIM7, ENABLE); // start TIM7
}
}
В результате передача по USB вообще прекратилась. По осциллографу вижу синхроимпульсы, т.е. прерывания происходят, по отладчику вижу, что программа заходит в функцию DataIN_OUT_toUSB. А вот передачи по шине просто нет. В чём может быть дело? Ведь таймер на время выполнения функции остановлен.