Пример #1
0
//智能车上位机数据上传函数
void Report_imu( unsigned short int roll,  unsigned short int pitch,  unsigned short int yaw)
{
	int i, j;
	static unsigned short int send_data[3][8] = { { 0 }, { 0 }, { 0 } };

	send_data[0][0] = ( unsigned short int)(roll);
	send_data[0][1] = ( unsigned short int)(pitch);
	send_data[0][2] = ( unsigned short int)(yaw);
	send_data[0][3] = (unsigned short int)(0);
	send_data[0][4] = (unsigned short int)(0);
	send_data[0][5] = (unsigned short int)(0);
	send_data[0][6] = (unsigned short int)(0);
	send_data[0][7] = (unsigned short int)(0);

	send_data[1][0] = (unsigned short int)(0);
	send_data[1][1] = (unsigned short int)(0);
	send_data[1][2] = (unsigned short int)(0);
	send_data[1][3] = (unsigned short int)(0);
	send_data[1][4] = (unsigned short int)(0);
	send_data[1][5] = (unsigned short int)(0);
	send_data[1][6] = (unsigned short int)(0);
	send_data[1][7] = (unsigned short int)(0);

	send_data[2][0] = (unsigned short int)(0);
	send_data[2][1] = (unsigned short int)(0);
	send_data[2][2] = (unsigned short int)(0);
	send_data[2][3] = (unsigned short int)(0);
	send_data[2][4] = (unsigned short int)(0);
	send_data[2][5] = (unsigned short int)(0);
	send_data[2][6] = (unsigned short int)(0);
	send_data[2][7] = (unsigned short int)(0);

	printf('S');
	printf('T');
	for ( i = 0; i < 3; i++)
		for ( j = 0; j < 8; j++)
		{
			usart1_send_char((unsigned char)(send_data[i][j] & 0x00ff));
			usart1_send_char((unsigned char)(send_data[i][j] >> 8u));
		}
}
Пример #2
0
int __io_putchar(char ch)
{
	usart1_send_char(ch);
	return 0;
}
Пример #3
0
/**
 * @brief  Main program.
 * @param  None
 * @retval None
 */
int main(void)
{
	int i;
	char ch = 'a';
	int leftright, forwardbackward, throttle, trim;
	char buffer[100];
	int matches;

	/* GPIOC Periph clock enable */
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

	/* Configure PC10 in output pushpull mode */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOC, &GPIO_InitStructure);

	/* Configure PA15 in input mode, no pullup/down */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	usart1_init();
        // USART_IT_RXNE:  Receive Data register not empty interrupt.
	//USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
	//USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
	//NVIC_Config();

	// disable error interrupts from USART1 (EIE=0)
	//USART1->CR3 &= ~(1 << 0);

	leftright = 126;
	forwardbackward = 126;
	throttle = 0;
	trim = 148;

	if (!writebuffer) {
		writebuffer = buffer1;
		readbuffer = buffer2;
	}

	{
		/* uint32_t dest[10]; */
		/* uint32_t src[10] = {0,1,2,3,4,5,6,7,8,9}; */
		/* __aeabi_memcpy(dest, src, 10); */
		/* memcpy(dest, src, 10); */
	}

	printf("Starting...\r\n"); 
	i = 20;
	while (1) {
		//send_command(132, 126, 24, 150);
		//send_command(leftright, forwardbackward, throttle, trim);
		// Channel command intervals:
		// A: 120 ms
		// B: 180 ms
		// But it seems that the heli doesn't care, so we can have longer intervals
		//delay_ms(180);

		if (usart1_receive_char(&ch)) {
			usart1_send_char(ch);
		}
		//delay_ms(1000);

		// USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
		// if (new_message) {
			// strcpy(buffer, readbuffer);
			// new_message = 0;
			// USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
			// printf("new message: \"%s\"\r\n", buffer);
			// matches = sscanf((const char *)buffer, "%d %d %d", &leftright, &forwardbackward, &throttle);
			// if (matches == 3) {
				// printf("new controls: %d %d %d\r\n", leftright, forwardbackward, throttle);
			// }
		// } else {
			// USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
		// }

		//detect_and_print_pulses();
		//delay_ms(500);

//		GPIOC->BSRR = BSRR_VAL;
//		delay_us(600);
//		GPIOC->BRR = BSRR_VAL;
//		delay_us(10);
	}
}
Пример #4
0
void usart1_send_str(char *str)
{
	while (*str != '\0') {
		usart1_send_char(*(str++));
	}
}