void chuankou_init(void){
RCC->APB2ENR |=(1<<3);//使能PB
RCC->APB1ENR |=(1<<18);//使能USART3
//使用PB10 PB11
AFIO->MAPR &=~(0x3<<4);
//PB10推挽输出
GPIOB->CRH &=~(0xF<<8);
GPIOB->CRH |=(0xB<<8);
//PB11上拉输入
GPIOB->CRH &=~(0xF<<12);
GPIOB->CRH |=(0x8<<12);
GPIOB->ODR |=(1<<11);
//usart3复位
RCC->APB1RSTR |=(1<<18);
RCC->APB1RSTR &=~(1<<18);
//波特率
USART3->BRR =(36*1000000)/(9600);
//数据格式
USART3->CR1 &=~(1<<12);
USART3->CR2 &=~(0x3<<12);//
USART3->CR1 |=(0x3<<2);//
//串口使能
USART3->CR1 |=(1<<13);
}
//发送数据
void usart_send_data(u8 data){
while(!(USART3->SR & (1<<6))){}
USART3->DR =data;
}
数据总是发不出去,麻烦帮忙看下错在哪,K1已经拨到RS232了,跳线帽拔掉了,与串口助手通信总是没有数据
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
有库函数的实例,但是我需要用寄存器来写
是9600啊
我想知道我的代码错在哪了?是不是必须开中断?我参考了扩展例程的代码,实在看不出自己错哪了
一周热门 更多>