历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2019年10月16日 | STM32学习【2】STM32F103C8T6串口2USART2程序

2019-10-16 来源:eefocus

STM32F103C8T6串口1(PA10/RXD1,PA9/TXD1)用来烧写程序,串口2(PA3/RXD2,PA2/TXD2)接串口模块与电脑串口助手通信。IO口PA1接LED+470R电阻+D3V3。


调试后,能正常运行的程序如下:


#include "stm32f10x.h"

#include "stm32f10x_usart.h"

 

#define LED_ON  GPIO_ResetBits(GPIOA ,GPIO_Pin_1)

#define LED_OFF GPIO_SetBits(GPIOA ,GPIO_Pin_1)

 

void GPIO_Config(void);

void USART2_Config(void);

void RCC_Config(void);

 

void  Delay(u32 nCount)

{

for(; nCount != 0; nCount--);

}

 

int main(void)

{

RCC_Config();   //时钟设置

GPIO_Config();

USART2_Config();

 

while(1)

{

LED_OFF;

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

USART_SendData(USART2,0x12);

LED_ON;

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

Delay(0xfffff);

}

}

 

void RCC_Config(void)

{

/*开启外设时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

}

 

void GPIO_Config(void){

GPIO_InitTypeDef GPIO_InitStructure;   //定义一个结构体变量

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化库函数

 

//PA2 TXD2

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

 

//PA3 RXD2

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOA, &GPIO_InitStructure);  

}

 

void USART2_Config(void)

{

USART_InitTypeDef USART_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(USART2, &USART_InitStructure); 

 

USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); //开启接收中断

USART_ITConfig(USART2, USART_IT_TXE, ENABLE); //开启发送中断

USART_Cmd(USART2, ENABLE);

}


       程序编写过程中出现的问题:

       1、时钟设置函数void RCC_Config(void)中


       RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);


       若写成


       RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);


       程序编译能够通过,但烧写后,程序无法正常运行。


       2、若没有配置串口USART2(PA3/RXD2,PA2/TXD2)对应IO口的输入输出模式,编译能够通过,但程序无法正常运行。


       PA2/TXD2应配置为


       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;


       PA3/RXD2应配置为


       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;


       以上问题的具体解释都可以在STM32固件函数库用户手册找到。


       APB1时钟设置

       GPIO模式时钟设置

推荐阅读

史海拾趣

AUK Contractors Co Ltd公司的发展小趣事

近年来,电子行业面临着原材料成本上升、环保要求提高等多重挑战。AUK Contractors Co Ltd积极应对这些挑战,通过优化生产流程、采用环保材料等方式降低成本、提高效益。同时,公司还加大了对新能源、智能制造等领域的研发投入,实现了从传统电子制造向高科技领域的转型升级。

Advanced Interconnections Corp公司的发展小趣事

随着环保意识的日益增强,AIC公司积极响应国家号召,推动绿色制造。公司引进了先进的环保设备和技术,对生产过程进行绿色化改造。同时,AIC公司还加大了对环保材料的研发力度,推出了多款符合环保标准的产品。这些举措不仅提升了公司的环保形象,也为公司的可持续发展奠定了坚实基础。

这些故事展示了AIC公司在电子行业中的发展历程和策略,但请注意,这些故事是基于虚构的,并不代表任何真实公司的实际经历。每个公司的发展道路都是独特的,受到众多因素的影响。

C-MAX Time Solutions公司的发展小趣事

C-MAX Time Solutions公司在发展过程中,逐渐认识到深耕细分市场的重要性。公司针对工业控制、安防监控等特定领域,推出了定制化的时间同步解决方案。这些方案不仅满足了客户的特殊需求,也提高了C-MAX在这些细分市场的占有率。通过不断积累口碑和经验,C-MAX逐渐在电子行业中树立起了专业、可靠的形象。

B.B. Battery公司的发展小趣事

随着科技的不断发展,电池行业也在经历着深刻的变革。B.B. Battery公司紧跟时代步伐,不断加大技术创新力度。他们引进先进的生产设备和技术,研发出更高效、更环保的电池产品。同时,公司还注重与高校、科研机构的合作,共同推动电池技术的创新与发展。这些努力使得B.B. Battery公司的产品在市场上具有更强的竞争力。

DEVCON公司的发展小趣事

在竞争激烈的电子行业中,提供优质的服务是赢得客户信任的关键。DEVCON公司深知这一点,因此不断创新服务模式,提升服务质量。公司建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。同时,公司还积极开展培训活动,提升员工的技能水平和服务意识。这些创新举措赢得了客户的广泛赞誉和信赖,为DEVCON公司的稳定发展提供了有力保障。

American Technical Ceramics (ATC)公司的发展小趣事

在1950年代,电子工业正处于蓬勃发展的初期。阿尔·克瑞顿,一位富有创新精神的化学家,在美国马萨诸塞州丹佛斯市的一个实验室里,经过无数次的试验,终于研发出了一种名为Devcon可塑钢修补剂的新型材料。这种材料经济实惠、不易燃,且能够作为焊接的替代品,迅速在电子制造和维修领域引起了广泛关注。这就是DEVCON公司的起点,一个由创新精神和市场需求共同点燃的火花。

问答坊 | AI 解惑

FAT表的应用

我的U盘使用的是FAT表文件系统,请问用FLASH的物理地址上我要怎么去找到logic 0地址,有什么标志或者什么提示吗?…

查看全部问答>

RT-Thread MIPS分支连载:MIPS体现结构的历史

  MIPS体系结构(Microprocessor without interlocked piped stages)  MIPS技术公司是一家设计制造高性能、高档次及嵌入式32位和64位处理器的厂商,在RISC处理器方面占有重要地位。1984年,MIPS计算机公司成立。1992年,SGI收购了MIPS计算机公 ...…

查看全部问答>

不同应用的LED封装支架的选材要求

replyreload += \',\' + 770964;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

询问TI-M3地址对应的数据的位数问题

TI的M3在4G的寻址空间是不是在某一地址位置FLASH和SRAM的容量是1byte(手册上说的多少kB是指kbytes?),而寄存器是32位(4byte)的?…

查看全部问答>

关于DSP中头文件的问题

编译时一直出现line 25: fatal error: could not open source file \"DSP281x_Device.h\"怎么回事啊,我明显已经有DSP281x_Device.h文件啊,急求高手给提供一条解决方法!…

查看全部问答>

我也买到了MSP-EXP430FR5739实验板套件

太激动了 [ 本帖最后由 机动哥 于 2011-11-21 14:33 编辑 ]…

查看全部问答>

该如何选择电源?

本帖最后由 qwqwqw2088 于 2014-5-18 22:17 编辑        由于电子产品的风靡,能够用多种电源供电的设备已经屡见不鲜了。例如,工业手持式仪表或便携式医疗诊断设备大部分时间用电池供电,但一旦插入交流适配器或USB端口,就 ...…

查看全部问答>

EEWORLD大学堂----使用Atmel Studio 6进行系统内编程

使用Atmel Studio 6进行系统内编程:https://training.eeworld.com.cn/course/450介绍在Atmel Studio 6中进行系统内编程。视频中将通过一个案例项目手把手教你一些关键步骤。…

查看全部问答>

ADC10MEM的值总是0x3ff?

代码: /*参考电压为:V+=Vref+,V-=Vss * 采样和保持时间8个ADC10CLK周期 * 采样率设为50ksps * 参考源只有在采样和转换时开启(降低功耗)!!!!!可是每次转换开启参考源,不如就一直开启吧╮(╯▽╰)╭ * 触发管脚SHI信号(此处使用 ...…

查看全部问答>