5. TPBasic_STM32F405RGT6的GPIO使用¶
一、什么是TPBasic_STM32F405RGT6最小系统板
TPBasic_STM32F405RGT6最小系统板是基于STM32F405RGT6芯片开发制作的最小系统板,方便开发与集成使用。二、利用TPBasic_STM32F405RGT6最小系统板完成串口的收发
1、具体要求
利用TPBasic_STM32F405RGT6最小系统板完成STM32通过串口1和上位机对话,STM32在收到上位机发过来的字符串(以回车换 行结束)后,原原本本的返回给上位机。同时每隔一定时间,通过串口1输出一段信息到电脑。2、所需器件
- TPBasic_STM32F405RGT6最小系统板 一块
- 杜邦线 若干根
三、制作主要过程
1、制作流程
PA9/PA10通过杜邦线连接在RXD/TXD上.
串口输入字符串以回车换行结束.
电脑端串口调试助手波特率必须是115200.
2、主要代码
#include "stm32f4xx.h" #define ON 0 #define OFF 1 #define key (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4)) void LED_Configuration(void); void delay(unsigned long int time); void LED(a) { if(a) GPIO_SetBits(GPIOC,GPIO_Pin_11); else GPIO_ResetBits(GPIOC,GPIO_Pin_11); } /* * 函数名:main * 描述 :主函数体 * 输入 :无 * 输出 :无 * 调用 :外部调用 */ int main(void) { SystemInit(); LED_Configuration(); LED(ON); delay(6000000); LED(OFF); // delay(6000000); while(1) { if(!key) { LED(ON); } else { LED(OFF); } } } /* * 函数名:LED_Configuration * 描述 :LED GPIO口配置 * 输入 :无 * 输出 :无 * 调用 :外部调用 */ void LED_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; //声明一个 初始化GPIO口时候用的 结构体 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC , ENABLE); //使能PI口的时钟,否则端口是不工作的 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ; //对结构体的GPIO_Pin对象赋值,声明要操作的是11端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//对结构体的GPIO_Mode对象赋值,声明IO口的模式是输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//对结构体的GPIO_OType对象赋值,声明IO口的结构是推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//对结构体的GPIO_Speed对象赋值,声明速度是100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //对结构体的GPIO_PuPd对象赋值,声明不上拉 GPIO_Init(GPIOC, &GPIO_InitStructure);//将结构体带入初始化函数中,执行初始化,否则之前设置都是无效的 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ; //对结构体的GPIO_Pin对象赋值,声明要操作的是4端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//对结构体的GPIO_Mode对象赋值,声明IO口的模式是输入 //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//对结构体的GPIO_Speed对象赋值,声明速度是100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //对结构体的GPIO_PuPd对象赋值,声明内部上拉 GPIO_Init(GPIOC, &GPIO_InitStructure);//将结构体带入初始化函数中,执行初始化,否则之前设置都是无效的 } void delay(unsigned long int time) { while(time--); }