Mình test module USART1 trên STM32F103R6. Yêu cầu sau mỗi khoảng delay sẽ gửi lên 1 ký tự 0 ('0'). Hiện tại sau mỗi khoảng delay nó gửi lên 2 byte giá trị đều là 0 (0x00) - lẽ ra phải là 1 byte có giá trị 0x30. Nhờ các bác trợ giúp dò lỗi ạ.
Đây là RCC:
Code cấu hình PA9,PA10 cho chân TX và chân RX:
Code khởi tạo USART1:
Main:
Đây là RCC:
Code:
void RCC_Init(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); }
Code:
void GPIO_Init(){ GPIO_InitTypeDef gpioconf; gpioconf.GPIO_Speed=GPIO_Speed_50MHz; gpioconf.GPIO_Mode=GPIO_Mode_IN_FLOATING; gpioconf.GPIO_Pin=GPIO_Pin_10; GPIO_Init(GPIOA,&gpioconf); gpioconf.GPIO_Mode=GPIO_Mode_AF_PP; gpioconf.GPIO_Pin=GPIO_Pin_9; GPIO_Init(GPIOA,&gpioconf); }
Code:
void USART_Init(){ USART_InitTypeDef usartconf; usartconf.USART_BaudRate=9600; usartconf.USART_Mode=USART_Mode_Rx | USART_Mode_Tx; usartconf.USART_Parity=USART_Parity_No; usartconf.USART_StopBits=USART_StopBits_1; usartconf.USART_WordLength=USART_WordLength_8b; usartconf.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_Init(USART1,&usartconf); USART_Cmd(USART1,ENABLE); }
Code:
int main(){ SystemInit(); RCC_Init(); GPIO_Init(); USART_Init(); while(1){ USART_SendData(USART1,'0'); for(int i=0;i<50000;i++); } }