Entrar    Registrar

IAR C + STM32 Interrupções

Software e Hardware para uC STM

Moderadores: aluis-rcastro, 51

  • Autor
    Mensagem

Re: IAR C + STM32 Interrupções

Mensagempor ze » 06 Ago 2019 20:42

:D
Que tal assim...
Código: Selecionar todos
#define   BIT_0   1<<0
#define   BIT_1   1<<1
#define   BIT_2   1<<2
#define   BIT_3   1<<3
#define   BIT_4   1<<4
#define   BIT_5   1<<5
#define   BIT_6   1<<6
#define   BIT_7   1<<7
#define   BIT_8   1<<8
#define   BIT_9   1<<9
...
#define   BIT_31   1<<31

Fala sério :lol: Por falar em falar sério, sabia que o IAR C não entende a definição de bits 0b01010101 ? Mas algum sem noção com muita noção e sem ter o que fazer criou isso:
Código: Selecionar todos
#define B8__(x) ((x&0x0000000fLU)?1:0) \
+((x&0x000000f0LU)?2:0) \
+((x&0x00000f00LU)?4:0) \
+((x&0x0000f000LU)?8:0) \
+((x&0x000f0000LU)?16:0) \
+((x&0x00f00000LU)?32:0) \
+((x&0x0f000000LU)?64:0) \
+((x&0xf0000000LU)?128:0)
#define HEX__(n) 0x##n##LU
#define b8(d) ((unsigned char)B8__(HEX__(d)))
/* for upto 16-bit binary constants, MSB first */
#define b16(dmsb,dlsb) (((unsigned short)b8(dmsb)<< \
+ b8(dlsb))
/* for upto 32-bit binary constants, MSB first */
#define b32(dmsb,db2,db3,dlsb) (((unsigned long)b8(dmsb)<<24) \
+ ((unsigned long)b8(db2)<<16) \
+ ((unsigned long)b8(db3)<< \
+ b8(dlsb))
/* Sample usage:
b8(01010101) = 85
b16(10101010,01010101) = 43605
b32(10000000,11111111,10101010,01010101) = 2164238933
*/

Agora isso
Código: Selecionar todos
#define BCD2BYTE( b ) ( ( ( ( ( b ) >> 4 ) & 0x0f ) * 10 ) + ( ( b ) & 0x0f ) )
#define BYTE2BCD( b ) ( ( ( ( b ) / 10 ) << 4 ) + ( ( b ) % 10 ) )
unsigned char bcd2byte(unsigned char d)
{
return BCD2BYTE(d);
}
//-----------------------------------------------------
unsigned byte2bcd(unsigned char d)
{
return BYTE2BCD(d);
}

também pode não ser totalmente inútil quando isso...
Código: Selecionar todos
#define setbit(var,bitno) ((var) |= 1 << (bitno))
#define clrbit(var,bitno) ((var) &= ~(1 << (bitno)))
#define xorbit(var,bitno) ((var) ^= 1 << (bitno))

Sei lá ... é pouco mas é o 'pagamento' das lustradas de bits que tenho . A propósito consegui fazer funcionar o stm32 na simulação do proteus... uhhull.
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1606
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor ze » 07 Ago 2019 12:07

Afff... pqp....
quer saber porquê agora funcionou na simulação proteus?
O proteus considera o bit 11 do RCC_APB2ENR como habilitação do TIMER2 e não o bit 0 do RCC_APB1ENR como manda o manual
Imagem
O código abaixo funciona
Código: Selecionar todos
  RCC_APB2ENR=0x0000080c;//0b100000001100; //TIM1? PORTA PORTB
  RCC_APB1ENR=0x00000000;//0b0001; //timer2!!
//  RCC_APB1ENR.TIM2EN=1;

Basta desabilitar o bit 11 TIMER1 !!!! que o treco nem roda e dá a mensagem
Código: Selecionar todos
Access to register of unclocked peripheral at 0x40000000 cause BUS_FAULT [U1_CM3CORE]

que juro pro 6 que lia unlocked !! carai.. se o treco tá destravado, porquê o aviso pow??!

Não basta escovar bits. Tem que dar uma uma lustrada e mais uma cuspidinha e passar um paninho no bit.. Fala sério!! tnc pow!
Avatar do usuário
ze
Dword
 
Mensagens: 1606
Registrado em: 05 Jun 2007 14:32

Re: IAR C + STM32 Interrupções

Mensagempor denis » 07 Ago 2019 12:17

Nada melhor do que rodar no hardware de verdade.
denis
Byte
 
Mensagens: 211
Registrado em: 06 Mar 2007 12:29
Localização: Americana - SP

Anterior

Voltar para STMicroelectronics

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante