新手入门
- 积分
- 3
- 金钱
- 3
- 注册时间
- 2021-5-26
- 在线时间
- 0 小时
|
1金钱
怎么使用stm32f407vgy6实现这个串口2的数据输出,控制一个语音模块
#include "usart2.h"
#include "USART2.h"
void USART2_Init(u32 bound)
{
float USARTDIV=0;
u16 DIV_Mantissa=0; //Õûêy2¿·Ö
u8 DIV_Fraction=0; //D¡êy2¿·Ö
//1)GPIOÅäÖÃ
RCC->AHB1ENR |=1<<0; //GPIOA ê±Öóê1Äü
GPIOA->MODER &=~(0xF<<(2*2)); //Ä£ê½ÅäÖà A2,PA3
GPIOA->MODER |=0xA<<(2*2); //¸′óÃÄ£ê½
GPIOA->AFR[0] &=~(0xFF<<8); //¸′óÃ1|ÄüÑ¡Ôñ
GPIOA->AFR[0] |=0x77<<8;
RCC->APB1ENR |=1<<17;//USART2ê±Öóê1Äü
//2)USARTÏà1Ø2ÎêyÅäÖ㨣¬1y2éÑùģ꽣¬×Ö3¤£¬ÆæżD£Ñ飬í£Ö1룩
USART2->CR1 &=~(1<<15); //16±¶1y2éÑùÄ£ê½
USART2->CR1 &=~(1<<12); //1 Æeê¼Î»£¬ 8 êy¾Y룬 n í£Ö1λ
//3)′®¿ú2¨ìØÂê¼ÆËãoíD′èë
USARTDIV =42*1000000/( 16.0*bound ) ; //3ËòÔ16.0£¬μÃμ½¸¡μãDíêy¾Y
DIV_Mantissa = USARTDIV; //μÃμ½Õûêy2¿·Ö
DIV_Fraction = (USARTDIV -DIV_Mantissa)*16; //μÃμ½D¡êy2¿·Ö
USART2->BRR = (DIV_Mantissa<<4) | DIV_Fraction; //D′èë2¨ìØÂê¼Ä′æÆ÷
//4)Ïà1Øê1Äü
USART2->CR1 |=1<<3; //·¢ËíÆ÷ê1Äü
USART2->CR1 |=1<<2; //½óêÕÆ÷ê1Äü
USART2->CR1 |=1<<13; //′®¿úÄ£¿éê1Äü
}
|
|