本文来源电子发烧友社区,作者:川楠, 帖子地址:https://bbs.elecfans.com/jishu_2241443_1_1.html
前言
大家好。
首先,感谢南京中科微提供的CSM32RV20开发板,同时也感谢发烧友提供的试用平台。
这次测试的是定时器,测试目标:使用定时器,周期性的控制LED灯。
代码编程
还是一样的,按照官方的教程,建立DEMO程序,查看main.c文件。
基本上定时器的相关代码就在这里的,但是定时器的中断函数呢?函数入口呢?
这里可以直接查看启动文件。
按照这个函数名称,查找:ctrl+f(基本上绝大多说的查找命令都是这个快捷键组合)
这样你就能找到中断函数:
在中断函数里,交替改变的是PA12引脚的电平变化。
到了这里,我基本上有了编程的思路的,这还在没有看数据手册的情况下:
具体代码如下:
复制代码
程序编译下载:
结果灯好像没有什么变化?就一个红灯常亮?
不要着急,使用示波器,或者逻辑分析仪看一下,PA12引脚的电平,你就明白了。
频率都达到了500HZ了,肉眼能看到,才是怪事。
到了这里,实验目的是达到了。但是通常,我们是需要改变定时的周期/频率的,所以,这里就需要仔细的研究下定时器初始化了。
PSC-预分频,值为31;ARR-自动重装寄存器,值为1000。
结合系统时钟是32MHZ,所以定时器的频率分频应该是31+1,所以计时时钟为1MHZ。
在这个频率下,计数1000个,也就是1KHZ,1MS,所以,定时器的中断周期是1MS,LED的频率就是500HZ了。
如果是这样的话,ARR的值应该是1000-1=999才是更精确的1MS定时中断啊。不过都是小问题。
调整验证一下:
将定时器中断周期改为500MS,使得LED1S闪烁一次。更改Timer1_UpCounting_Mode_Init();
可以看到预分频的值范围是0-65535;
定时器为16位定时器,计数范围也是0-65535;
所以修改定时器初始化值为:
在抓PA12波形:
试用感受
CSM32整体用起来,感觉还是不错基本上不用看手册就可以了,把单个功能实现。但是,如果在仔细的看官方的源代码,其实还是能找到一些小问题。
就比如,定时器ARR应该要减1才对,
前言
大家好。
首先,感谢南京中科微提供的CSM32RV20开发板,同时也感谢发烧友提供的试用平台。
这次测试的是定时器,测试目标:使用定时器,周期性的控制LED灯。
代码编程
还是一样的,按照官方的教程,建立DEMO程序,查看main.c文件。
基本上定时器的相关代码就在这里的,但是定时器的中断函数呢?函数入口呢?
这里可以直接查看启动文件。
按照这个函数名称,查找:ctrl+f(基本上绝大多说的查找命令都是这个快捷键组合)
这样你就能找到中断函数:
在中断函数里,交替改变的是PA12引脚的电平变化。
到了这里,我基本上有了编程的思路的,这还在没有看数据手册的情况下:
具体代码如下:
- int main(void)
- {
- ///----System Init ---------------------------------------------------------------------------------------------
- CLIC_Init();//系统中断配置
- System_Clock_Init();//系统时钟初始化
- GPIO_MODE_Init(GPIOA,PIN12,GPIO_MODE_OUTPUT); //GPIO 模式
- //外设配置
- timer1_UpCounting_Mode_Init();//向上计数
- Interrupt_Enable(TIMER1_updata_int_ID);//CLIC使能中断
- //使能系统总中断
- SYS_Interrupt_Enable();//CLIC开总中断
- while(1)
- {
- }
- return 0;
- }
程序编译下载:
结果灯好像没有什么变化?就一个红灯常亮?
不要着急,使用示波器,或者逻辑分析仪看一下,PA12引脚的电平,你就明白了。
频率都达到了500HZ了,肉眼能看到,才是怪事。
到了这里,实验目的是达到了。但是通常,我们是需要改变定时的周期/频率的,所以,这里就需要仔细的研究下定时器初始化了。
PSC-预分频,值为31;ARR-自动重装寄存器,值为1000。
结合系统时钟是32MHZ,所以定时器的频率分频应该是31+1,所以计时时钟为1MHZ。
在这个频率下,计数1000个,也就是1KHZ,1MS,所以,定时器的中断周期是1MS,LED的频率就是500HZ了。
如果是这样的话,ARR的值应该是1000-1=999才是更精确的1MS定时中断啊。不过都是小问题。
调整验证一下:
将定时器中断周期改为500MS,使得LED1S闪烁一次。更改Timer1_UpCounting_Mode_Init();
可以看到预分频的值范围是0-65535;
定时器为16位定时器,计数范围也是0-65535;
所以修改定时器初始化值为:
在抓PA12波形:
试用感受
CSM32整体用起来,感觉还是不错基本上不用看手册就可以了,把单个功能实现。但是,如果在仔细的看官方的源代码,其实还是能找到一些小问题。
就比如,定时器ARR应该要减1才对,
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
南京中科微
+关注
关注
0文章
60浏览量
742 -
CSM32RV20
+关注
关注
0文章
40浏览量
215
发布评论请先 登录
相关推荐
瑞芯微主板/开发板Linux系统播放音频方法,触觉智能RK3562开发板演示
本文介绍瑞芯微方案主板/开发板Linux系统播放音频的方法,触觉智能RK3562开发板演示,通用RK3566、RK3568、RK3588等
常用在工业控制系统上的MCU芯片资料:CSM32RV20
CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 内置RISC-V RV32IMAC内核(2.6CoreMark/MHz); 蕞高32MHz工作频率; 内置4kB的SRAM; 内置8B
有奖丨米尔 瑞芯微RK3576开发板免费试用
米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动来啦~~米尔提供了7块价值849元的MYD-LR3576
【作品合集】龙芯2K0300蜂鸟开发板试用精选
】+4.libmodbus移植【龙芯2K0300蜂鸟板试用】+3.移植lua到loongarch【龙芯2K0300蜂鸟板
发表于 09-10 18:17
【龙芯2K0300蜂鸟板试用】开箱体验
本帖最后由 ele2022 于 2024-8-13 19:54 编辑
首先感谢电子发烧友和龙芯中科提供的试用机会。
今天开箱体验龙芯中科的一款2K0300蜂鸟
发表于 08-12 19:59
点击参与米尔NXP i.MX 93开发板有奖试用
米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-LMX9X开发板发起试用活动您不仅可以免费体
香橙派发布首款RISC-V开发板OrangePi RV
2024年3月,香橙派在全球开发者会议上发布了其首款基于RISC-V开发的OrangePi RV主板。这款开发板拥有四核RISC-V U74与S7协处理器,配备
fpga开发板与linux开发板区别
(Field-Programmable Gate Array)是一种可编程逻辑器件,它可以通过编程改变硬件逻辑电路的功能和结构。FPGA采用了可编程的门极,可以根据需要重新配置内部电路,从而实现不同的功能和逻辑关系。而Linux开发板
rv1126和rk3568对比
视频编解码。而RK3568开发板创龙科技旗下工业开发板,基于瑞芯微RK3568J/RK3568B2处理器设计,四核ARM Cortex-A55,每核主频高达1.8GHz/2.0GHz。
51单片机开发板的主要功能 51单片机开发板能做什么
51单片机开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片机开发板的主要功能以及能够实现的
【核桃派1B 开发板试用体验】+系统安装与基本功能测试篇
适配器来供电,并以厂家配备的USB线来连接适配器及开发板的Type-C接口。比较有意思的是,在这条电源线上还配有一个小型的电源开关,在电源操控时方便了许多。
图5电源供电
核桃派所提供的视频接口为
发表于 01-02 09:47
评论