STM32F407ZGT6|串口发送数据给上位机(定时)

功能:通过串口发送数据给上位机(定时)
涉及知识:串口通信、定时器、中断
参考资料
https://blog.csdn.net/weixin_49079904/article/details/127517855?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_49079904/article/details/127577210?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_49079904/article/details/127614041?spm=1001.2014.3001.5502
这几篇看明白了应该问题不大(就是在这个基础上改的)

步骤
1、一些初始化
2、使能 GPIO USART 定时器 中断 定时器中断
3、外设 引脚重映射
4、初始化 USART
5、初始化 串口设置
6、初始化 定时器
7、配置中断分组NVIC
8、编写中断服务程序

1、一些初始化
	GPIO_InitTypeDef GPIO_InitStructure;//GPIOA
	USART_InitTypeDef Usart_InitStructure;//USART
	NVIC_InitTypeDef  NVIC_InitStructure;//NVIC
	TIM_TimeBaseInitTypeDef TIM_InitStructure;//TIM3
2、使能 GPIO USART 定时器 中断 定时器中断
	//使能定时器 及 外设时钟GPIOA  
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能 外设时钟GPIOA
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能 USART1
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//使能 定时器时钟TIM3
	//设置TIM3_DIER允许更新中断
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//参数2:指明使能的定时器中断类型 更新(该项目为更新)、触发、输入捕获
3、外设 引脚重映射
//PA9引脚重映射
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
4、初始化 USART
	//USART 初始化 仅需设置前两个参数即可,后面三个均为默认
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_InitStructure.GPIO_Speed = GPIO_Low_Speed;
	GPIO_Init(GPIOA , &GPIO_InitStr
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在STM32F407ZGT6上配置一个串口,然后使用相应的库函数来发送数据。下面是一个简单的示例代码: ```c #include "stm32f4xx.h" #include "stm32f4xx_usart.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" void USART_Config(void); int main(void) { USART_Config(); while(1) { // 发送数据 USART_SendData(USART1, 'A'); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } } void USART_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; // 使能USART1和GPIOA的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 配置PA9为复用功能,USART1_TX GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStruct); // 配置USART1 USART_InitStruct.USART_BaudRate = 115200; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Tx; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_Init(USART1, &USART_InitStruct); // 使能USART1 USART_Cmd(USART1, ENABLE); } ``` 在上面的代码中,我们使用USART1作为示例,使用PA9引脚作为USART1的TX引脚。在主函数中,我们使用`USART_SendData`函数来发送数据,同时使用`USART_GetFlagStatus`函数来检查发送寄存器是否为空,以确保数据已成功发送。在`USART_Config`函数中,我们首先使能USART1和GPIOA的时钟,然后配置PA9为复用功能,USART1_TX。接着,我们使用`USART_Init`函数来配置USART1的波特率、数据位、停止位等参数,最后使能USART1。 请注意,这只是一个简单的示例代码,实际的应用可能需要更多的配置和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值