AB1601GPIO不支持较高频率的脉冲中断
来源:互联网 发布:淘宝信鸽赛中二手 编辑:程序博客网 时间:2024/05/05 12:38
当输入信号的周期比较小时,中断脚无法做出响应。
测试代码如下:
#include "ab1600.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ab_uart.h"
#include "ab_clk.h"
#include "Drv_gpio.h"
#include "Drv_pinmux.h"
//pio input/output
#define PIO_INPUT 0
#define PIO_OUTPUT 1
//pio value
#define PIO_LOW 0
#define PIO_HIGH 1
//pio number
enum
{
WAKEUP_KEY = 0,
PIO0 = WAKEUP_KEY,
PIO1,
PIO2,
PIO3,
PIO4,
PIO5,
PIO6,
PIO7,
PIO8,
PIO9,
PIO10,
PIO11,
PIO12,
PIO13,
PIO14,
PIO15,
PIO16,
PIO17,
PIO18,
PIO19,
PIO20,
PIO21,
PIO22,
PIO23,
PIO24,
PIO25,
PIO26,
PIO27,
PIO28,
PIO29,
};
static void uart1_rx_data_ind(uint16_t len)
{
uint8_t buf1[64];
uint16_t rlen;
while(rlen = AB_UART_Read(uart1_ins, buf1, 32))
{
}
}
const Ab_UartParam uart1_param_3M = {115200L, 380, UART_FORMAT_WORD_LENGTH_8_BIT | UART_FORMAT_STOP_1_BIT, uart1_rx_data_ind};
#define GPIO_TEST_PIN_OUT PIO19//输出脉冲信号用于产生中断
static void PinOutHigh(void)
{
DRV_Gpio_ValSet((1L << GPIO_TEST_PIN_OUT), PIO_HIGH);
}
static void PinOutLow(void)
{
DRV_Gpio_ValSet((1L << GPIO_TEST_PIN_OUT), PIO_LOW);
}
void PinOutInit(void)
{
DRV_PinMux_SigSet((1L << GPIO_TEST_PIN_OUT), PIN_GPIO);
DRV_Gpio_DirSet((1L << GPIO_TEST_PIN_OUT), PIO_OUTPUT);
DRV_Gpio_PullSet((1L << GPIO_TEST_PIN_OUT), PULL_UP);
DRV_Gpio_ValSet((1L << GPIO_TEST_PIN_OUT), PIO_LOW);
}
#define GPIO_INT_PIN_IN PIO18//用于检测中断输入
#define GPIO_INT_PIN_IN_MASK (1L<<GPIO_INT_PIN_IN)
static void GpioIntHandler(unsigned char io_num)
{
printf("io %d interrupt......\n", io_num);
}
static void GpioIntEn(void)
{
//DRV_Gpio_IntReg(GPIO_INT_PIN_IN, (GPIO_INTR_TYPE_ENUM)EDGE_POS, GpioIntHandler);//上升沿
DRV_Gpio_IntReg(GPIO_INT_PIN_IN, (GPIO_INTR_TYPE_ENUM)EDGE_NEG, GpioIntHandler);//下降沿
DRV_Gpio_IntEn(GPIO_INT_PIN_IN);
}
void GpioIntInit(void)
{
DRV_PinMux_SigSet(GPIO_INT_PIN_IN_MASK, PIN_GPIO);
DRV_Gpio_DirSet(GPIO_INT_PIN_IN_MASK, PIO_INPUT);
DRV_Gpio_PullSet(GPIO_INT_PIN_IN_MASK, PULL_UP);
GpioIntEn();
}
//gpio18和gpio19相连
void main()
{
AB_CLK_Switch(AB_CLK_16M, false);//XT
AB_UART_Open(uart1_ins, (Ab_UartParam*)&uart1_param_3M);
Ab_printf_init(uart1_ins);//print output port
PinOutInit();
GpioIntInit();
printf("gpio int test!\r\n");
while(1)
{
//产生一个脉冲
PinOutHigh();
OS_delay_ms(5);//5毫秒的脉冲无法检测到
PinOutLow();
/*
//产生一个脉冲
PinOutHigh();
OS_delay_ms(10);//10ms的可以检测到
PinOutLow();
*/
OS_delay_ms(1000);
}
}
- AB1601GPIO不支持较高频率的脉冲中断
- AB1601某些io口不支持较高频率信号的输入
- 频率较高的Java面试题
- 出现频率较高的面试题(c#)
- 【RAC】使用频率较高的CRS维护命令总结
- RAC使用频率较高的CRS维护命令
- 最近使用频率较高的linux命令
- linux使用频率较高的shell命令
- Java中使用频率较高的函数
- 面试中出现频率较高的英语问题及精彩回答
- 外版编程书籍中出现频率较高的词汇
- Python 3基础教程17-提问频率较高的几个Python问题
- 使用频率较高的7大seo作弊技术手法
- 步进电机转速与脉冲频率的关系
- 脉冲频率对步进电机转矩的影响
- 外版编程书籍中出现频率较高的词汇——看你是否都认识?
- 流量较高的网站
- 伺服电机的速度与编码器反馈脉冲频率成正比
- 【搜索入门专题1】I
- linuxPXE自动化部署服务器
- python爬虫进阶(一):静态网页爬取
- 注解库之ButterKnife
- python利用网易云音乐接口搭建的音乐推荐,根据单曲歌名推荐相关用户喜爱的歌曲
- AB1601GPIO不支持较高频率的脉冲中断
- python机器学习----利用sklearn进行情感分析
- CSS3 transform 属性
- ios-应用程序沙盒
- Problems & Solutions --3
- (二)SLAM拓扑地图(地图的优化)
- “玲珑杯”ACM比赛 Round #19 A.A simple math problem【打表找规律】
- Date和String相互转换(重点)
- luogu1880 合并石子(区间dp)