新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2015-9-11
- 在线时间
- 0 小时
|
5金钱
自己写个不用中断的串口测试程序,能发送不能接收。找了一天也找不到问题所在。请大侠帮忙看看问题在哪里?MINI板。
#include"sys.h"
#include"delay.h"
#include"led.h"
int main(void)
{
//u8 date[2]="wo";
int a;
float te;
u16 mantissa;
u16 fraction;
Stm32_Clock_Init(9);
delay_init(72);
LED_Init();
te=(float)(72*1000000)/(9600*16);//得到USARTDIV
mantissa=te; //得到整数部分
fraction=(te-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<2; //使能PORTA口时钟
RCC->APB2ENR|=1<<14; //使能串口时钟
GPIOA->CRH&=0XFFFFF00F;//IO状态设置
GPIOA->CRH|=0X000008B0;//IO状态设置 端口复用功能配置寄存器USART1_REMAP=0默认映像PA9 PA10 参见中文参考手册8.3.8
RCC->APB2RSTR|=1<<14; //复位串口1
RCC->APB2RSTR&=~(1<<14);//停止复位
//波特率设置
USART1->BRR=mantissa; // 波特率设置
//USART1->CR1|=0X200C;
while(1)
{
USART1->CR1|=0X200C;
while((USART1->SR&0x20)==1)
{
a=USART1->DR;
printf("你输出了一个字符\r\n");
printf("\r\n\r\n");
USART1->DR=(u8)a;
printf("\r\n\r\n");
while((USART1->SR&0x40)==0);
}
LED1=0;LED0=1;
}
}
|
|