Дык!dosikus писал(а):Зы. "Размерность" нуля - достойна баша ...
А я ж апчём?
Дык!dosikus писал(а):Зы. "Размерность" нуля - достойна баша ...
Код: Выделить всё
TIM3->CNT = (uint16_t)0x5A;HHIMERA писал(а):CAN, SPI в STM32F0XX, ДМА и адресация... Там без приведения типов можно интересных глюков наловить...
Код: Выделить всё
#define ADC_Resolution_12b ((uint32_t)0x00000000)oleg110592 писал(а):для десятичных (больших)
А если боимся за вменяемость компилятора
...типы CHAR и INT могут свободно смешиваться в арифметических выражениях: каждая переменная типа CHAR автоматически преобразуется в INT. Это обеспечивает значительную гибкость при проведении определенных преобразований символов.
...
При преобразовании символьных переменных в целые возникает один тонкий момент. Дело в том, что сам язык не указывает, должны ли переменным типа CHAR соответствовать численные значения со знаком или без знака. Может ли при преобразовании CHAR в INT получиться отрицательное целое? К сожалению, ответ на этот вопрос меняется от машины к машине, отражая расхождения в их архитектуре. На некоторых машинах (PDP-11, например) переменная типа CHAR, крайний левый бит которой содержит 1, преобразуется в отрицательное целое ("знаковое расширение"). На других машинах такое преобразование сопровождается добавлением нулей с левого края, в результате чего всегда получается положительное число.
Код: Выделить всё
do{
SD_sendCommand(SEND_OP_COND, 0);
responce = SD_sendCommand(SEND_OP_COND, 0); //activate card's initialization process
}while(responce && ++retry< 0xfffe);
if (retry == 0xfffe)
return 1;Код: Выделить всё
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2, TIM_IT_Update)!= RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
if(tim_counter) { tim_counter--; }
//else if(DiscreateIO::pObject) { DiscreateIO::pObject->write_discrio_data(); }
GPIOB->ODR ^= GPIO_Pin_14;
//if(Timer::pObject)Timer::pObject->onTick();
};
}
//инициализация
TIM_TimeBaseInitTypeDef tim2;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
tim2.TIM_Period = 500;
tim2.TIM_CounterMode = TIM_CounterMode_Up;
tim2.TIM_Prescaler = 120-1;
TIM_TimeBaseInit(TIM2, &tim2);
TIM_Cmd(TIM2, ENABLE);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);Код: Выделить всё
extern "C" void TIM2_IRQHandler(void); Гуня писал(а):в отладчике - один раз зашло в прерывание, вышло, и больше туда никогда не заходит.
Леонид Иванович писал(а):Гуня писал(а):в отладчике - один раз зашло в прерывание, вышло, и больше туда никогда не заходит.
А в реальном железе что происходит? Если, например, в обработчике прерывания ногой дергать и осциллографом ее смотреть? У меня, например, в IAR отладчик чаще не работает, чем работает.
oleg110592 писал(а):тогда предложу для проверки попробовать этот код, не используя SPL: http://easystm32.ru/for-beginners/27-basic-timers