历史上的今天
今天是:2024年09月09日(星期一)
2018年09月09日 | STM32组合设备实现USB转双串口
2018-09-09 来源:eefocus
串口及其中断初始化
void USART1Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ClearFlag(USART1,USART_FLAG_TC);
USART_Cmd(USART1, ENABLE);
}
void NVIC_USART1_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
串口发送一个字节函数
void Usart1SendByte(char byte)//发送一个字节 硬件连接选用的为USART1
{
USART1->SR;
USART_SendData(USART1, (uint8_t) byte);
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
}
数据打包发送函数
void ADC_ConvertSend(float value)
{
unsigned char temp[6];
char CheckStart='~';//数据传输开始
char CheckEnd='!';//表示一次传输完成
unsigned short i=0,j=0;
float floatVariable=value;
unsigned char *pdata = (unsigned char *)&floatVariable;
temp[0]=CheckStart;//数据包头
for(i=0;i<4;i++)
{
temp[i+1] = *pdata++;//float转BYTE
}
temp[5]=CheckEnd;//数据包尾
for( j=0;j<6;j++)
{
Usart1SendByte(temp[j]);
}
}
史海拾趣
|
我现在做的一个板子上面用到AD652芯片,也需要外部时钟输入。现在对时钟感到很困惑,希望大家能给点意见。我的想法是: 1.stm32用石英晶振,AD652用有源晶振,但是1-2M的有源晶振很难买。 2.只用有源晶振,通过分频器分别给stm32、AD652提供时钟 ...… 查看全部问答> |
|
ds1302读取只有三个能显示正确,怎么回事,实在检查不出问题所在 Write_Ds1302Byte(0x8f,0); 1。 sec = BCDToDEC(Read_DS1302Byte(SEC_READ)); Delay(100); 2。 min = BCDToDEC(Read_DS1302Byte(MIN_READ)); & ...… 查看全部问答> |
|
用PB订制wince5,是不是必须用同时生成的eboot? 用别人的eboot行吗? 为什么我订制完wince后,用PB生成的eboot启动,就停在“Starting eboot ...”不动了。 平台是pxa270,eboot要做什么修改吗?… 查看全部问答> |
|
找不到具有OpenAdapter入口函数的Dll,驱动版本显示是nv4_disp.dll 我最近在学习WDD的一点开发,根据帮助文档说,所有Directo3D要用到的调用函数都是从相应Dll里的OpenAdapter或者OpenAdapter10接口,一步步导出来的。我在有些人的机器上找到了Dll,比如nvd3dum.dll, 但是有 ...… 查看全部问答> |
|
刚开始还用着挺好的,新建了一个工程后,连了好多次,怎么也connect不上。 挺急的,还请大家多帮忙,非常感谢。 Error connecting to the target: Error 0x80001240/-1072 Fatal Error during: Initialization, OCS, Target, Device d ...… 查看全部问答> |
|
求教:Xbee S2组建的zigbee网络与iris mote传感器网络能否通信? 小弟接触zigbee不久,请大大们指教。 我现在有两个网络,一个XBee S2组起来的zigbee网络,Xbee使用的固件是X-ctu中的XB24-ZB,还有一个是crossbow的iris mote组建的传感器网络。我现在需要使两个网络之间互相通信。 我的想法是根据zigbee网络的协 ...… 查看全部问答> |




