Код: Выделить всё
Error[Pe144]: a value of type "uint32_t volatile *" cannot be used to initialize an entity of type "int volatile *"Код: Выделить всё
Error[Pe144]: a value of type "uint32_t volatile *" cannot be used to initialize an entity of type "int volatile *"Код: Выделить всё
for(__O int *i = &GPIOC->ODR;; *i = TIM2->CNT & GPIO_ODR_ODR13);
Код: Выделить всё
//for(__O int *i = &GPIOC->ODR;; *i = TIM2->CNT & GPIO_ODR_ODR13);
LDR.N R0,??main_0 ;; 0x4001100c
LDR.N R1,??main_0+0x4 ;; 0x40000024
??main_1:
LDR R2,[R1, #+0]
AND R2,R2,#0x2000
STR R2,[R0, #+0]
B.N ??main_1Код: Выделить всё
for(;;) GPIOC->ODR = TIM2->CNT & GPIO_ODR_ODR13;Код: Выделить всё
LDR.N R0,??main_0 ;; 0x4001100c
LDR.N R1,??main_0+0x4 ;; 0x40000024
//for(;;) GPIOC->ODR = TIM2->CNT & GPIO_ODR_ODR13;
??main_1:
LDR R2,[R1, #+0]
AND R2,R2,#0x2000
STR R2,[R0, #+0]
B.N ??main_1
И почитаем конкретный ответ[uquote="VladislavS",url="/forum/viewtopic.php?p=3626725#p3626725"]И только если уговорить компилятор, то 1 Гц на выходе.[/uquote]В качестве средства для развития алгоритмического воображения, предлагаю определить, что делает нижеследующий алгоритм, будучи запущенным на F103 c частотой 72мгц.
Код: Выделить всё
for(__O int *i = &GPIOC->ODR;; *i = TIM2->CNT & GPIO_ODR_ODR13);Код: Выделить всё
for(;;) GPIOC->ODR = TIM2->CNT & GPIO_ODR_ODR13;Код: Выделить всё
__STATIC_INLINE void udelay(uint32_t micros) {
TIM14->SR = TIM14->CNT = 0;
TIM14->ARR = micros * 8 - 1;
while (TIM14->CR1 = TIM14->SR + 1 & TIM_SR_UIF) { ; }
}Код: Выделить всё
__STATIC_INLINE void udelay(uint32_t us)
{
TIM14->CNT = 0;
TIM14->CR1 = TIM_CR1_CEN;
while (TIM14->CNT < us * 8 - 6) {}
TIM14->CR1 = 0;
}
Код: Выделить всё
__STATIC_INLINE void u_delay(uint32_t us) {
TIM14->CNT = 0;
while (TIM14->CR1 = (TIM14->CNT < us * 8 - 6)) { ; }
}Код: Выделить всё
#define U_DELAY(US) for(TIM14->CNT = 0; TIM14->CR1 = TIM14->CNT < (US) * 8 - 6;) { ; }Код: Выделить всё
__STATIC_INLINE void udelay(uint32_t micros)
{
TIM14->SR = TIM14->CNT = 0;
TIM14->ARR = micros * 8 - 1;
TIM14->CR1 = TIM_CR1_CEN;
while (!TIM14->SR) {}
TIM14->CR1 = 0;
}Код: Выделить всё
while (!TIM14->SR) {}Код: Выделить всё
while (!TIM14->SR) {}