历史上的今天
今天是:2025年07月10日(星期四)
2018年07月10日 | STM32入门学习之USART中断(STM32F030F4P6基于CooCox IDE)
2018-07-10 来源: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);
//......
}
}
史海拾趣
|
在一般的代码中都可以看到如下定义的帧结构 struct ip { uint EtherHead[9]; uchar VerandIphLen; & ...… 查看全部问答> |
|
RT-Thread MIPS分支连载:MIPS体现结构的历史 MIPS体系结构(Microprocessor without interlocked piped stages) MIPS技术公司是一家设计制造高性能、高档次及嵌入式32位和64位处理器的厂商,在RISC处理器方面占有重要地位。1984年,MIPS计算机公司成立。1992年,SGI收购了MIPS计算机公 ...… 查看全部问答> |
|
ucos的信息邮箱用在子函数里,是不是消息邮箱的指针就传递不出来了啊? ucos 用在任务之间,任务不删除任务中的变量就还在生存,所以邮箱能够把指针传递出来,但是如果用在子函数中,子函数运行结束,变量就没了,那么邮箱传递的地址内容就不对了。我的理解对吗,如果对的话,那怎么从子函数中传递出多个数据例如一个数 ...… 查看全部问答> |
|
主要分为两部分,上面是交流信号,可输出三角波和正弦波,每个信号可选择输出电压幅度,频率和相位。左边的波形显示是调节参数后即将输出的波形的形状(目前还没有输出),当用户确定需要输出该波形后点击 “开始交流输出”后信号源即开始输出波 ...… 查看全部问答> |
|
嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠。 2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。 3.面向应用,强实时性,可用于各种设备控制当中。 国际上常见的嵌入式操作系统大约有40种左,右如:Li ...… 查看全部问答> |
|
EEWORLD大学堂----使用Atmel Studio 6进行系统内编程 使用Atmel Studio 6进行系统内编程:https://training.eeworld.com.cn/course/450介绍在Atmel Studio 6中进行系统内编程。视频中将通过一个案例项目手把手教你一些关键步骤。… 查看全部问答> |
|
设计狮大神你怎么看?这个可以替代带灯轻触开关的结构--可发光可贴片的硅胶按键 LED SMD Rubber Touch Switch 贴片带灯硅胶按键。 寿命300W次,过回流焊,耐高温280度。发光均匀。 能否替代带灯轻触开关呢? … 查看全部问答> |




