STM32学习【2】STM32F103C8T6串口2USART2程序
来源:互联网 发布:mysql怎样导出数据库 编辑:程序博客网 时间:2024/04/30 03:39
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 TXD2GPIO_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 RXD2GPIO_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模式时钟设置
3 0
- STM32学习【2】STM32F103C8T6串口2USART2程序
- STM32L151 usart2 串口2 程序
- STM32 USART1 USART2 UASRT3 UART4 UART5串口通信测试程序
- STM32的usart2串口调试
- STM32(RFID)阶段一:添加串口USART2,修改中断接收协议
- STM32 DMA发送(USART2)
- STM32F103C8T6学习笔记_串口USART的使用
- Stm32F407ZGT6 串口通迅 usart2
- stm32串口程序
- STM32 串口程序
- STM32-串口程序
- STM32串口1发送,串口2接收
- STM32 学习六 串口通信2 编程仿真
- STM32学习笔记-串口
- STM32F103C8T6 IAP程序
- STM32F103C8T6-LED点亮程序
- STM32 串口程序(全) (转载)
- stm32 DMA 配置 串口程序
- java通过nginx+apache tomcat接收用户头像图片上传,实现网站动态和静态域名访问图片的详细教程
- CUDA 7.5 Nsight 4.7 GTX960 openGL interop 调试报错
- 设置Launch Image 启动图片
- swift bug修改
- 人工智能之优化算法1-蚁群优化算法
- STM32学习【2】STM32F103C8T6串口2USART2程序
- jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
- 官方保留的特殊MAC地址
- IPC中的Binder机制
- Android 讲解:布局
- hello world!
- PostgreSQL9.5在CentOS 7 x86_64下的安装
- 利用有名管道实现连个独立进程的对话程序
- java调用.net的webservice代码