本文来源电子发烧友社区,作者:川楠, 帖子地址: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浏览量
1371 -
CSM32RV20
+关注
关注
0文章
40浏览量
461
发布评论请先 登录
相关推荐
热点推荐
【作品合集】中科昊芯Core_DSC280025C开发板测评
Core_DSC280025C开发板试用体验】+2.RAM工程与FLASH工程对比
【中科昊芯Core_DSC280025C开发板
发表于 09-18 10:52
【作品合集】玄铁Banana Pi BPI-RV2开发板测评
测试
作者:chen000000009【Banana Pi BPI-RV2开发板试用体验】开箱+硬件介绍
【Banana Pi BPI-RV2开发板
发表于 09-17 10:58
【作品精选】2025电子发烧友开发板测评大赛作品合集!
Milk-V Duo S 开发板免费试用
玄铁Banana Pi BPI-RV2开发板试用
玄铁Banana Pi BPI-CanMV-K2
发表于 09-03 15:24
【嘉楠堪智K230开发板试用体验】+02+基本功能测试
1、引言
感谢电子发烧友论坛给与的试用测评机会,感谢嘉楠科技提供的01 科技(01Studio)CanMV K230 AI开发板 ,让我有机会去学习采用全新的多异构单元加速计算架构的K230 系列
发表于 06-28 22:27
【Banana Pi BPI-RV2开发板试用体验】开箱上电
BPI-RV2 RISC-V开源路由器之开箱上电
背景
现在刚好正在研究短距及网络相关的东东。
最近刚好有幸得到了一块香蕉派 BPI-RV2 RISC-V 开源路由器开发板。感谢电子发烧友
发表于 06-26 19:51
【Banana Pi BPI-RV2开发板试用体验】开发板介绍视频
一. 开发板介绍香蕉派 BPI-RV2 RISC-V 路由器开发板采用矽昌通信 SF21H8898 芯片方案矽昌 SF21H8898 四核64位RISC-V 处理器, 1.25GHz主频得益于矽昌自
发表于 06-24 23:51
有奖丨米尔 瑞芯微RK3506开发板免费试用
米尔与瑞芯微合作发布的新品基于瑞芯微RK3506应用处理器的MYD-YR3506开发板免费试用名额来啦~~米尔提供了3块价值299元的MYD-YR3506
中微爱芯32位MCU开发板AiP32RV15X介绍
AiP32RV15X开发板是一款基于RISCV内核的32位MCU开发板,提供了板载调试器、RESET、WAKEUP按键、三色LED、CAN收发器、USB接口、UART、ADC、SPI、IIC、RTC、
有奖丨米尔 瑞芯微YR3562开发板免费试用
米尔与瑞芯微合作发布的新品基于瑞芯微RK3562应用处理器的MYD-YR3562开发板免费试用活动来啦~~米尔提供了3块价值599元的MYD-YR3562

【南京中科微CSM32RV20开发板试用体验】+2.Timer基本功能
评论