Код: Выделить всё
#include "stm32f10x.h"
#include "STM_Config.h"
#include "LIS331DLH_Config.h"
#include "Accelerometer.h"
uint8_t DataOut[3];
uint32_t j=0;
void EXTI_Configuration(void)
{
AFIO->EXTICR [1] = AFIO_EXTICR2_EXTI4_PC;
EXTI->IMR |= EXTI_IMR_MR4;
EXTI->RTSR |= EXTI_RTSR_TR4;
}
void USART_Send_Symbol(uint8_t data)
{
while ((USART1->SR & USART_SR_TXE) != USART_SR_TXE);
USART1->DR=data;
}
void EXTI4_IRQHandler(void)
{
if (EXTI->PR & (1<<4))
{
DataOut[0]=ReadReg(LIS302DL_OUT_X);
DataOut[1]=ReadReg(LIS302DL_OUT_Y);
DataOut[2]=ReadReg(LIS302DL_OUT_Z);
for (j=0;j<3;j++)
USART_Send_Symbol(DataOut[j]);
ReadReg(LIS302DL_FF_WU_SRC2_REG);
EXTI->PR |= (1<<4);
}
}
int main(void)
{
SYSCLK_Configuration();
GPIO_Configuration();
EXTI_Configuration();
USART_Configuration();
SPI_Configuration();
__enable_irq();
NVIC_EnableIRQ(EXTI4_IRQn);
WriteReg(LIS302DL_CTRL_REG1,(1<<PD_CTRL_REG1) | (1<<ZEN_CTRL_REG1) |(1<<XEN_CTRL_REG1) | (1<<YEN_CTRL_REG1));
WriteReg(LIS302DL_CTRL_REG2,(1<<FDS_CTRL_REG2));
WriteReg(LIS302DL_CTRL_REG3, (1<<I2CFG1_CTRL_REG3));
WriteReg(LIS302DL_FF_WU_THS1_REG, 55);
WriteReg(LIS302DL_FF_WU_CFG2_REG,(1<<AOI_FF_WU_CFG_REG) | (1<<LIR_FF_WU_CFG_REG)| (1<<ZHIE_FF_WU_CFG_REG) | (1<<YHIE_FF_WU_CFG_REG) | (1<<XHIE_FF_WU_CFG_REG));
ReadReg(LIS302DL_FF_WU_SRC2_REG);
while(1)
{
}
}
