历史上的今天
返回首页

历史上的今天

今天是: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]);

 }

 }


推荐阅读

史海拾趣

DURAKOOL公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,DURAKOOL公司始终保持着对创新的追求。公司不断投入研发资源,推动产品升级和技术进步。同时,公司也关注行业趋势和未来发展,积极探索新的业务领域和市场机会。展望未来,DURAKOOL将继续致力于成为全球电子行业的领先者。

请注意,以上故事均为虚构,旨在提供与DURAKOOL公司发展相关的故事概要。如需了解更多关于DURAKOOL公司的详细信息,建议查阅相关报道或公司官方资料。

DEMMELPRODUCTS公司的发展小趣事

作为一家有远见的企业,DEMMELPRODUCTS公司始终关注环保和社会责任。公司积极推广绿色生产理念和技术,减少生产过程中的废弃物排放和能源消耗。同时,公司还积极参与社会公益活动,为社会做出了积极的贡献。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

ECS公司的发展小趣事

ECS公司始终坚持以客户为中心的服务理念。他们深入了解客户的需求和痛点,为客户量身定制解决方案。例如,针对某些行业对数据安全性的特殊要求,ECS公司推出了专用的安全加密方案;针对一些大型企业对于大规模计算资源的需求,ECS公司提供了定制化的高性能计算服务。这些定制化服务不仅满足了客户的特殊需求,还增强了客户对ECS公司的信任和忠诚度。

富满电子(FM)公司的发展小趣事

ECS公司成立于XXXX年,由一群热衷于云计算技术的工程师创立。在创立初期,公司就明确了以提供高效、弹性的云服务为目标。他们深入研究了虚拟化技术、自动化管理等关键技术,成功推出了ECS服务,为客户提供按需分配的计算资源。这一创新的服务模式迅速吸引了众多客户的关注,ECS公司开始在云服务市场崭露头角。

方舟(ARKLED)公司的发展小趣事

方舟公司不仅关注经济效益,还积极履行社会责任。公司积极参与环保事业,推动绿色生产,减少能源消耗和废弃物排放。同时,方舟公司还关注社会公益事业,捐资助学、扶贫济困,为社会和谐发展贡献了一份力量。

Datapro International Inc公司的发展小趣事

随着技术的不断进步和市场的不断扩大,Datapro International Inc公司开始寻求新的市场机会。他们发现,随着企业信息化程度的提高,对数据存储和处理的需求也越来越大。于是,公司决定进军企业市场,并开发了一系列针对企业的数据存储解决方案。

在拓展企业市场的过程中,Datapro International Inc公司面临着来自竞争对手的激烈竞争。然而,他们凭借卓越的产品质量、专业的技术服务和灵活的商业模式,成功赢得了客户的信任和支持。随着企业市场的不断拓展,Datapro International Inc公司的业务规模也逐渐扩大。

问答坊 | AI 解惑

请问 STM32芯片外部时钟能用有源晶振吗?谢谢

我现在做的一个板子上面用到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));               & ...…

查看全部问答>

移动网络的动态检测

TD-SCDMA 网络的动态检测 我们开发的产品用了TD模块,当网络信号好时,正常用应没关系。当网络信号不好时(没有网络时)连不TD网络。 别人是如何处理这些网络变化的情况的(有网络-->没有网络-->有网络). …

查看全部问答>

keil Debug里面的view为什么用不了?

我是新手,现在输出hello 教材上说Debug理的VIEW能看输出结果,但是我的为什么用不了啊》?…

查看全部问答>

PB订制wince问题?

用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不上了?help me

刚开始还用着挺好的,新建了一个工程后,连了好多次,怎么也connect不上。 挺急的,还请大家多帮忙,非常感谢。 Error connecting to the target: Error 0x80001240/-1072 Fatal Error during: Initialization, OCS, Target,  Device d ...…

查看全部问答>

求助:430C语言问题

while((ADC12IFG&BIT2)==0);可以判断2位是否置位吗?…

查看全部问答>

求教:Xbee S2组建的zigbee网络与iris mote传感器网络能否通信?

小弟接触zigbee不久,请大大们指教。 我现在有两个网络,一个XBee S2组起来的zigbee网络,Xbee使用的固件是X-ctu中的XB24-ZB,还有一个是crossbow的iris mote组建的传感器网络。我现在需要使两个网络之间互相通信。 我的想法是根据zigbee网络的协 ...…

查看全部问答>