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;
- }
- }
|