CH579 是集成 BLE 无线通讯的 ARM 内核 32 位微控制器。片上集成低功耗蓝牙 BLE 通讯模块、以太网控制器及收发器、全速 USB 主机和设备控制器及收发器、段式 LCD 驱动模块、ADC、触摸按键检测模块、RTC 等丰富的外设资源。
功能强大:通用输入输出端口 GPIO:
- 40 个 GPIO,其中 4 个支持 5V 信号输入
- 32 个中断输入,32 个唤醒输
最小系统原理图:
程序设计使用GPIO7下降沿触发中断的程序,实现了GPIO下降沿中断和UART1接收中断的回显功能。短接GIPO7和GND,进入中断后引发串口将会打印。
#include "CH57x_common.h"
__align(4) UINT8 RxBuffer[ MAX_PACKET_SIZE ]; // IN, must even address
__align(4) UINT8 TxBuffer[ MAX_PACKET_SIZE ]; // OUT, must even address
int main()
{
//上拉
GPIOA_ModeCfg(GPIO_Pin_7, GPIO_ModeIN_PU);
//下降沿触发
GPIOA_ITModeCfg(GPIO_Pin_7,GPIO_ITMode_FallEdge);
// NVIC_SetPriority(GPIO_IRQn,4);//设置中断优先级(也可以不设置,默认 4)
//使能中断
NVIC_EnableIRQ( GPIO_IRQn );
/*配置串口1*/
GPIOA_SetBits(GPIO_Pin_9);
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-配置上拉输入
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);// TXD-配置推挽输出,注意先让IO口输出高电平
UART1_DefInit();
/*使能接收中断,接收错误中断*/
UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
// NVIC_SetPriority(TMR0_IRQn,18);//设置中断优先级(也可以不设置,默认14)
NVIC_EnableIRQ( UART1_IRQn );
while(1)
{
}
}
//GPIO中断
void GPIO_IRQHandler(void) {
if(GPIOA_ReadITFlagBit(GPIO_Pin_7))
{
GPIOA_ClearITFlagBit(GPIO_Pin_7);
PRINT("gpio interrupt\r\n");
}
}
/*串口中断*/
void UART1_IRQHandler(void)
{
char data;
switch( UART1_GetITFlag() )
{
case UART_II_LINE_STAT: // 线路状态错误
UART1_GetLinSTA();
break;
case UART_II_RECV_RDY: // 数据达到设置触发点
data = UART1_RecvByte();
UART1_SendByte(data);
break;
case UART_II_RECV_TOUT: // 接收超时,暂时一帧数据接收完成
data = UART1_RecvByte();
UART1_SendByte(data);
break;
case UART_II_THR_EMPTY: // 发送缓存区空,可继续发送
break;
case UART_II_MODEM_CHG: // 只支持串口0
break;
default:
break;
}
}
|