以下是基于以上外部函数编写的STM32F103程序,实现了在PC9引脚接收到高电平后,在4.3寸GT9147触摸屏上显示收到高电平的次数:
```c
#include "stm32f10x.h"
#include "GT9147.h"
#include "LCD_TFT.h"
#include "stdlib.h"
#define MAX_COUNT 99999
uint32_t count = 0;
void RCC_Configuration(void){
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
| RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE , ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //状态LED1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //最大输出速度50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //输入引脚PC9
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //带上拉输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //最大输入速度50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line9) != RESET) {
count++;
if(count > MAX_COUNT) count = 0;
EXTI_ClearITPendingBit(EXTI_Line9);
}
}
int main(void)
{
RCC_Configuration(); //系统时钟初始化以及外部引脚使能
GPIO_Configuration(); //状态LED1和输入引脚PC9的初始化
FSMC_LCD_Init(); //FSMC TFT接口初始化
LCD_Init(); //LCD初始化
GT9147_Init(); //GT9147触摸屏初始化
TFT_CLEAR(0,0,479,799); //清屏
POINT_COLOR=