管理员
  
- 积分
- 165602
- 金钱
- 165602
- 注册时间
- 2010-12-1
- 在线时间
- 2121 小时
|
发表于 2013-11-1 23:08:54
|
显示全部楼层
库函数的没。。。
寄存器的有:
给你参考下
void UART4_IRQHandler(void)
{
u8 res;
if(UART4->SR&(1<<5))//接收到数据
{
res=UART4->DR;
if(CCTALK_RX_CNT<64)CCTALK_RX_BUF[CCTALK_RX_CNT++]=res;
}
}
//初始化IO 串口3
//pclk1 CLK1时钟频率(Mhz)
//bound:波特率
void uart4_init(u32 pclk1,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk1*1000000)/(bound*16);//得到USARTDIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<4; //使能PORTC口时钟
RCC->APB1ENR|=1<<19; //使能串口4时钟
GPIOC->CRH&=0XFFFF00FF; //IO状态设置
GPIOC->CRH|=0X00008B00; //IO状态设置
GPIOC->ODR|=1<<11; //rx上拉
RCC->APB1RSTR|=1<<19; //复位串口4
RCC->APB1RSTR&=~(1<<19);//停止复位
//波特率设置
UART4->BRR=mantissa; // 波特率设置
UART4->CR1|=0X200C; //1位停止,无校验位.
//使能接收中断
UART4->CR1|=1<<8; //PE中断使能
UART4->CR1|=1<<5; //接收缓冲区非空中断使能
MY_NVIC_Init(2,0,UART4_IRQChannel,2);//组2,抢占3,响应2,
} |
|