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++);
}
}
