历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2021年09月29日 | STM32入门学习之USART中断(STM32F030F4P6基于CooCox IDE)

2021-09-29 来源:eefocus

#include "stm32f0xx.h"

#include "stm32_lib/inc/stm32f0xx_rcc.h"

#include "stm32_lib/inc/stm32f0xx_gpio.h"

#include "stm32_lib/inc/stm32f0xx_usart.h"

#include "stm32_lib/inc/stm32f0xx_misc.h"

 

#include "delay.h"

 

int main(void)

{

//1、使能时钟

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

 

//2、引脚选择

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);

 

//3、引脚设置

GPIO_InitTypeDef PORT_UART1_TX;//定义TX脚,PORT_UART1_TX是自定义名称,可以任意

PORT_UART1_TX.GPIO_Mode=GPIO_Mode_AF;

PORT_UART1_TX.GPIO_Pin=GPIO_Pin_9;//此参数根据上面选择的引脚来定

//PORT_UART1_TX.GPIO_Speed=GPIO_Speed_10MHz;

PORT_UART1_TX.GPIO_PuPd=GPIO_PuPd_UP;

GPIO_Init(GPIOA,&PORT_UART1_TX);

 

GPIO_InitTypeDef PORT_UART1_RX;//定义RX脚

PORT_UART1_RX.GPIO_Mode=GPIO_Mode_AF;

PORT_UART1_RX.GPIO_Pin=GPIO_Pin_10;//此参数根据上面选择的引脚来定

//PORT_UART1_RX.GPIO_Speed=GPIO_Speed_10MHz;

PORT_UART1_RX.GPIO_PuPd=GPIO_PuPd_UP;

GPIO_Init(GPIOA,&PORT_UART1_RX);

 

//4、串口参数配置

USART_InitTypeDef MyUsart1;//这个MyUsart1是我自定义的,可以任意定义如XYZ123

MyUsart1.USART_BaudRate=9600;//设置波特率

MyUsart1.USART_WordLength=USART_WordLength_8b;//设置数据长度

MyUsart1.USART_Parity=USART_Parity_No;//设置奇偶校验

MyUsart1.USART_StopBits=USART_StopBits_1;//设置停止位

MyUsart1.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//设置流控制

MyUsart1.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//设置模式

USART_Init(USART1,&MyUsart1);

//允许接收中断RXNE和发送完成中断TC

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

USART_ITConfig(USART1,USART_IT_TC,ENABLE);

 

//5、使能

USART_Cmd(USART1,ENABLE);

 

//6、中断向量设置

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//设置中断

NVIC_InitStructure.NVIC_IRQChannelPriority=0;//设置优先级

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能

NVIC_Init(&NVIC_InitStructure);

 

while(1){

 

}

}

 

//中断函数

void USART1_IRQHandler(void){

unsigned char temp=0;

//如果是接收中断

if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){

temp=USART_ReceiveData(USART1);//读完即自动清除RXNE

USART_SendData(USART1,temp);

//USART_ClearFlag(USART1,USART_FLAG_RXNE);

}

//如果是发送中断

else

{

USART_ClearFlag(USART1,USART_FLAG_TC);

//......

}

}


推荐阅读

史海拾趣

GS Yuasa Battery Sales UK Ltd.公司的发展小趣事

对于基本二阶段低通滤波器电路,网友可能会有多方面的问题。以下是一些常见问题及其详细回答:

1. 基本二阶段低通滤波器电路的结构是怎样的?

回答:基本二阶段低通滤波器电路通常由两个一阶低通滤波器级联而成,每个一阶低通滤波器包含一个电阻和一个电容。具体来说,电路由两个电阻(R1, R2)和两个电容(C1, C2)组成。输入信号首先经过R1和C1组成的一阶低通滤波器,然后其输出再经过R2和C2组成的第二个一阶低通滤波器。这种结构可以有效滤除输入信号中的高频分量,只保留低频部分。

2. 如何计算二阶段低通滤波器的截止频率?

回答:二阶段低通滤波器的截止频率并非简单地将两个一阶滤波器的截止频率相加或平均。实际上,其截止频率与两个电阻和两个电容的值都有关。对于RC滤波器,单个一阶低通滤波器的截止频率为f_c1 = 1/(2πR1C1)和f_c2 = 1/(2πR2C2)。然而,对于二阶RC低通滤波器,其总截止频率通常使用以下公式计算:

f_c = \frac{1}{2\pi\sqrt{R_1R_2C_1C_2}} \] 这个公式考虑了两个滤波阶段的相互作用。 ### 3. 二阶段低通滤波器相比一阶滤波器有哪些优势? **回答**:二阶段低通滤波器相比一阶滤波器在滤波效果上有显著优势。具体来说,二阶段滤波器在通带内的增益更为平坦,而在阻带内的衰减速度更快(通常为-40dB/dec,比一阶滤波器的-20dB/dec快)。这意味着二阶段滤波器能更好地滤除高频噪声,保留低频信号,从而改善信号的纯度和信噪比。 ### 4. Sallen-Key结构和多路反馈结构(MFB)有什么区别? **回答**:Sallen-Key结构和多路反馈结构(MFB)是二阶低通滤波器的两种常见拓扑结构。Sallen-Key结构通常用于单位增益、高增益精度和低Q值的应用中,其电路结构相对简单,且对运算放大器的性能依赖性较小。而多路反馈结构(MFB)则适用于需要高Q值和高增益的应用场景。MFB结构通过引入额外的反馈路径来实现更高的Q值和更灵活的增益控制,但相应地,其电路复杂度也更高。 ### 5. 在实际应用中,如何选择合适的二阶段低通滤波器参数? **回答**:在选择二阶段低通滤波器的参数时,需要根据具体的应用需求来确定。首先,需要明确滤波器的截止频率,这取决于需要滤除的高频噪声的频率范围。其次,需要考虑滤波器的增益和相位特性,以确保信号在通过滤波器后能够保持所需的幅度和相位关系。最后,还需要考虑滤波器的稳定性和实现复杂度,以确保滤波器在实际应用中能够稳定可靠地工作。 在实际设计过程中,可能需要通过仿真软件来验证所选参数的效果,并根据仿真结果进行调整和优化。此外,还需要注意选择高质量的元件来构建滤波器电路,以确保滤波器的性能和稳定性。
Eink公司的发展小趣事
2001年6月,E-Ink再次宣布技术突破,推出了“Ink-in-Motion”技术,使得电子纸上可以显示活动影像。这一技术为电子纸的应用开辟了新的领域,如动态广告、电子书等。
遨格芯微(AGM)公司的发展小趣事

除了在智能手机和IoT市场取得突破外,AGM还深耕工业和消费类市场。公司自主研发并量产的可编程逻辑SoC产品系列广泛应用于工业和消费类市场,满足了客户对高容积率、低成本、高品质的市场需求。通过不断的技术创新和产品优化,AGM在工业和消费类市场逐渐形成了自己的竞争优势,并赢得了越来越多客户的认可和信赖。

Hitachi Metals公司的发展小趣事

然而,在快速发展的过程中,Hitachi Metals也遭遇过一些挑战。2016年,公司被曝出篡改部分铝制品的强度数据,这一事件对日立金属的声誉造成了一定影响。面对这一危机,公司迅速采取措施进行整改,加强了对产品质量的控制和监管力度。通过持续改进质量管理体系和强化员工培训等措施,Hitachi Metals成功恢复了市场对公司的信任。这一事件也促使公司更加注重产品质量的稳定性和可靠性,为未来的发展奠定了更加坚实的基础。

DALLAS公司的发展小趣事

Dallas公司非常重视与全球客户的合作关系。公司积极与全球各地的客户建立联系,了解他们的需求和反馈,为他们提供定制化的产品和服务。这种紧密的合作关系不仅为Dallas公司带来了稳定的订单和收入来源,也促进了公司产品的不断改进和创新。

ECLIPSE公司的发展小趣事

随着云计算、大数据和人工智能等技术的不断发展,Eclipse也面临着新的挑战和机遇。Eclipse团队正在积极研究新技术,探索新的应用场景。未来,Eclipse将继续保持开放和创新的精神,为开发者们提供更加优秀、高效的开发工具和服务。同时,Eclipse也将继续加强与其他开源项目和公司的合作,共同推动开源生态的发展。

问答坊 | AI 解惑

每一个JAVA初学者都应该搞懂的问题

对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。   问题一:我声明了什么!   String ...…

查看全部问答>

找位兄弟编一些程序

我最近有个事情,打算在MINI2440基础上做一个简易的CCD采集系统,软件完成的功能是控制IO口的时序读取AD数值,并通过USB发送。我本人对软件不算太了解,找比较清楚的兄弟帮忙编写一些代码。报酬可以谈。 PS:后续的数据处理在电脑上完成希望可以移 ...…

查看全部问答>

WinCE下应用程序读.txt文件乱码

编写一个在WinCE下运行的 ,基于MFC的应用程序,读取.txt文件 文件内容的结构如下 书名1;价格1 书名2;价格2 书名3;价格 3 。。。。。。 CFile myfile(L\"D:\\\\food.txt\", CFile::modeRead); int length = myfile.GetLength(); char ...…

查看全部问答>

关于wince5.0下虚拟串口的问题!

我的开发板的cpu是s3c2410的,操作系统是wince5.0。买了一个gps接收器和一个蓝牙棒(板子上不带蓝牙),将蓝牙棒和板子的usb连接,wince下的一个蓝牙管理程序可以找到gps,但是我用OZi for ppc的软件只支持com口的数据传输,在笔记本上蓝牙口可以自 ...…

查看全部问答>

请教达人

我想采集几路直流电压信号到计算机,然后经过运算再输出到外围显示一些数字,不知道硬件电路需要些什么?因为我不是学计算机的,所以希望由一些市场上可以买到的模块拼请来实现,希望哪位达人知道一下,谢谢了!…

查看全部问答>

高分请教简单问题:AT89s52的访问外部地址问题

我的硬件原理图如下链接:请放心打开! http://www.dzjia.cn/html/jiejuefangan/20070619/24939_2.html 如图示:P2.7接到RC500的NCS片选脚上,这时我想要访问RC500的内部地址,我就应该先定义要访问的地址,如下: #define Page_Sel      ...…

查看全部问答>

一个关于md5加密的问题

我新建了一个智能设备应用程序。数据库的数据是用md5加密了,我现在要用到md5这个类。为什么我都引用了 using System.Security.Cryptography。干吗md5类还是用不了呢。如果不行,有什么好办法呢…

查看全部问答>

lpc1114样片进展

首先LPC1114这个板是不好分开的,我的工具就一把削笔刀,所以只是把PCB线画断。昨晚把外围电路电源和芯片的电源分开 居然可以找到 还可以仿真 下载也没出错  就是不运行下载的程序,怀疑是复位电路电阻大了,弄了下没效果 眼看2点了 明早上班 ...…

查看全部问答>

ISE 相关问题

请问一下,ise里的clock_dedicated_route就什么意思?? rt??通常在什么情况下,ise会建议做这个约束,谢谢…

查看全部问答>

我是新手

大家好!我是新手,刚开始学习MSP430,由于嘴笨,说的可能不多,望原谅。我计划在年底前学会MSP430的基本操作。主要目的是想用来做智能卫浴,只希望给我这么一个小小的机会。给我也发一片。十分感激!…

查看全部问答>