3440|2

7188

帖子

11

TA的资源

版主

楼主
 

【沁恒RISC-V内核 CH582】5 点亮LED灯 [复制链接]

 

前面用UART例子,做了串口收发,下面做到点灯:

看了好久的原理图,没有直接连接LED的IO,最后想到跳线:

 拿到跳线,把PB19连到了LED2上。

目前还没有找到延时程序,找到了定时器0的例子:

 这里我把GPIOB—15 更改成GPIOB19,时间把100ms改成500ms。

 UART+LED主程序如下:

  • /********************************** (C) COPYRIGHT *******************************
  • * File Name : Main.c
  • * Author : WCH
  • * Version : V1.0
  • * Date : 2020/08/06
  • * Description : 串口1收发演示
  • *******************************************************************************/
  • #include "CH58x_common.h"
  • UINT8 TxBuff[] = "This is a tx exam\r\n";
  • UINT8 RxBuff[100];
  • UINT8 trigB;
  • int main()
  • {
  • UINT8 len;
  • SetSysClock( CLK_SOURCE_PLL_60MHz );
  • /* 配置串口1:先配置IO口模式,再配置串口 */
  • 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();
  • #if 1 // 测试串口发送字符串
  • UART1_SendString( TxBuff, sizeof( TxBuff ) );
  • #endif
  • #if 1 /* 定时器0,设定100ms定时器进行IO口闪灯, PB15-LED */
  • GPIOB_SetBits( GPIO_Pin_19 );
  • GPIOB_ModeCfg( GPIO_Pin_19, GPIO_ModeOut_PP_20mA );
  • TMR0_TimerInit( FREQ_SYS / 2 ); // 设置定时时间 100ms
  • TMR0_ITCfg( ENABLE, TMR0_3_IT_CYC_END ); // 开启中断
  • PFIC_EnableIRQ( TMR0_IRQn );
  • #endif
  • #if 1 // 查询方式:接收数据后发送出去
  • while( 1 )
  • {
  • len = UART1_RecvString( RxBuff );
  • if ( len )
  • {
  • UART1_SendString( RxBuff, len );
  • }
  • }
  • #endif
  • #if 0 // 中断方式:接收数据后发送出去
  • UART1_ByteTrigCfg( UART_7BYTE_TRIG );
  • trigB = 7;
  • UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
  • PFIC_EnableIRQ( UART1_IRQn );
  • #endif
  • while( 1 )
  • ;
  • }
  • __INTERRUPT
  • __HIGH_CODE
  • void UART1_IRQHandler( void )
  • {
  • UINT8V i;
  • switch ( UART1_GetITFlag() )
  • {
  • case UART_II_LINE_STAT : // 线路状态错误
  • {
  • UART1_GetLinSTA();
  • break;
  • }
  • case UART_II_RECV_RDY : // 数据达到设置触发点
  • for ( i = 0; i != trigB; i++ )
  • {
  • RxBuff[i] = UART1_RecvByte();
  • UART1_SendByte( RxBuff[i] );
  • }
  • break;
  • case UART_II_RECV_TOUT : // 接收超时,暂时一帧数据接收完成
  • i = UART1_RecvString( RxBuff );
  • UART1_SendString( RxBuff, i );
  • break;
  • case UART_II_THR_EMPTY : // 发送缓存区空,可继续发送
  • break;
  • case UART_II_MODEM_CHG : // 只支持串口0
  • break;
  • default :
  • break;
  • }
  • }
  • __INTERRUPT
  • __HIGH_CODE
  • void TMR0_IRQHandler( void ) // TMR0 定时中断
  • {
  • if ( TMR0_GetITFlag( TMR0_3_IT_CYC_END ) )
  • {
  • TMR0_ClearITFlag( TMR0_3_IT_CYC_END ); // 清除中断标志
  • GPIOB_InverseBits( GPIO_Pin_19 );
  • }
  • }

这里要注意的是,我把延时程序复制过来,死活编译不过:

 说没有找到`TMR0_TimerInit'这里函数的定义,搞了好久才知道,CH58x_timer0.c没有参与编译

在CH58x+timer0.c上右键,选择参与编译才能通过。

 最后效果成功的点亮LED2,并做到半秒种闪烁:

上手的感觉就是CH582上手比较容易,性能强,相比刚入手STM8,STM32,CH582配置要精简,运行速度快。做为入门第一难的就是如果熟悉下载固件,跟ESP8266有得一比,稍要加点学习。不过经过我的上手说明后,应该会简单一些,我给大家填了坑!欢迎大家一起学习,如果说得不对,一起交流交流。
 

最新回复

厉害,我也是找了半天LED连在哪里,没想到是需要飞线的。另外,延时函数在"CH58x_sys.h"文件中 void mDelayuS( UINT16 t );        /* uS 延时 */ void mDelaymS( UINT16 t );        /* mS 延时 */   详情 回复 发表于 2022-2-27 15:36
点赞(1) 关注
 
 

回复
举报

1631

帖子

4

TA的资源

纯净的硅(高级)

沙发
 

不错,RISC-V应该是个后起之秀

个人签名科技改变生活
 
 
 

回复

274

帖子

8

TA的资源

纯净的硅(初级)

板凳
 

厉害,我也是找了半天LED连在哪里,没想到是需要飞线的。另外,延时函数在"CH58x_sys.h"文件中

void mDelayuS( UINT16 t );        /* uS 延时 */
void mDelaymS( UINT16 t );        /* mS 延时 */

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
耦合专贴

NO~1 什么是耦合?耦合是什么?耦合是指两个实体相互依赖于对方的一个量度。分为以下几种: 非直接耦合:两个模块之间没有直接 ...

Mathcad14,实用的数学和电路应用工具

在这里向EEWORLD的论坛好友们推荐一款软件,我曾经学习过一段时间,个人感觉不错。只是我尚未学到家,所以没能很好的运用到我的 ...

给大家转发个MSP430 JTAG(USB的和并口的)与目标板连接需要注意的几点总结

经常看到有初学MSP430的朋友在坛里询问MSP430JTAG与目标板连接方面的问题,我在这里给大家总结一下,希望能给初学MSP430的朋友拨 ...

Helper2416-05——S3C2416裸机开发环境

本帖最后由 yuanlai2010 于 2014-7-10 19:22 编辑 S3C2416裸机开发环境 参与Helper2416开发板助学计划心得 S3C2416开发 ...

Veiko的R7F0C809开发进程贴

本帖最后由 Veiko 于 2015-8-20 20:37 编辑 前两天收到板子,晒了一下:晒板贴 今天终于把开发环境及工具这些都搞定了,算 ...

【GD32E503评测】——05.LCD第一篇:测试刷屏速度

本帖最后由 xld0932 于 2021-2-18 00:17 编辑 一、LCD部分原理图 525112LCD部分使用了GD32E503的EXMC(外部存储器控制器) ...

太阳能简单自动追踪器

太阳能简单自动追踪器

电路仿真软件哪个好用?哪款是你最常用的?

本帖最后由 wangerxian 于 2022-11-8 14:37 编辑 相信大家在电路设计之前,对于一些不确定的电路设计,可能会拿仿真软件试验 ...

进来看看这段汉明 译码器代码吧(in Verilog)

本帖最后由 zzw_rst 于 2023-3-17 13:04 编辑 疑问在截图上,因为压缩所以放和文本一起了。

【米尔 瑞芯微RK3576 工业开发板】3.简易web控制的播放器。

本帖最后由 快乐的小香蕉 于 2025-2-8 01:56 编辑 需求是局域网其他设备通过web访问rk3576,并播放3576上存储的视频。 视 ...

关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 5

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表