初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2012-7-20
- 在线时间
- 15 小时
|
5金钱
void uart5_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);//????USARTDIV@OVER8=0
mantissa=temp; //??????????·?
fraction=(temp-mantissa)*16; //??????????·?@OVER8=0
mantissa<<=4;
mantissa+=fraction;
RCC->AHB1ENR|=(1<<2)|(1<<3); //????PORTC\PORTD???±??
RCC->AHB1ENR|=1<<20; //?????®??UART5?±??
// GPIO_Set(GPIOB,PIN6|PIN7,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);//PA9,PA10,????????,????????
GPIO_Set(GPIOC,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);//PC12????????,????????
GPIO_Set(GPIOD,PIN2,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU); //PD2????????,????????
GPIO_AF_Set(GPIOC,12,8); //PC12
GPIO_AF_Set(GPIOD,2,8); //PD2
//?¨?????è??
UART5->BRR=mantissa; //?¨?????è??
UART5->CR1&=~(1<<15); //?è??OVER8=0
UART5->CR1|=1<<3; //?®??·???????
#if EN_UART5_RX //??????????????
//????????????
UART5->CR1|=1<<2; //?®??????????
UART5->CR1|=1<<5; //??????????·???????????
MY_NVIC_Init(3,3,UART5_IRQn,2);//×é2??×?????????
#endif
UART5->CR1|=1<<13; //?®??????
}
//===============================================
void Uart5_putch(u8 k)
{
if(k == '\n')
{
//????·?????×???????UART2??·?????????
UART5->DR = k;
//????·????ê??
while (!(UART5->SR & USART_FLAG_TXE));
}
else
{
UART5->DR = k;
while (!(UART5->SR & USART_FLAG_TXE));
}
}
USART1已经能够正常使用,只是UART5找不到是哪里出问题了!还请原子指点
|
最佳答案
查看完整内容[请看2#楼]
回复【2楼】正点原子:
---------------------------------
该问题已经解决了,还是谢谢原子哥帮顶,附上初始化代码
void uart5(int baud)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_AHB1Pe ...
|