以下是基于以上外部函数编写的STM32F103程序,实现了在PC9引脚接收到高电平后,在4.3寸GT9147触摸屏上显示收到高电平的次数:
```c
#include "stm32f10x.h"
#include "TFTLCD.h"
#include "GT9147.h"
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) { // 判断是否为PC9引脚触发的中断
count++; // 计数器加1
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