【南京中科微CSM32RV20开发板试用体验】无调试器迈出第一步,建立工程,点亮一个LED

描述

本文来源电子发烧友社区,作者:xcs101, 帖子地址:https://bbs.elecfans.com/jishu_2243648_1_1.html


点亮一个LED效果(开发板体验视频,详见作者原文链接内容) 

本帖最后由 xcs101 于 2022-2-16 11:53 编辑
今天入门南京中科微CSM32RV20开发板,讲讲如何开展设计,迈出第一步,建立工程,点亮LED,做个记录,方便后面学习,与大家共同探讨。

一、需要用到的外设
1、一个IO口
查看电路图,开发板上有一个RGBLED灯,使用其中一个引脚PA8,对应蓝灯。
GPIO 是用户可配置的通用 IO,每一个 GPIO 口都可以独立配置成输入输出、外设复用功能或模拟功能。GPIOA0~15 对应 PA0~PA15,GPIOB0~13 对应PB0~PB13。

二、工程建立
根据该链接建立一个空白的工程
https://mp.weixin.qq.com/s/El8-GMhWRSGGQWrMXCVcBA
首先安装软件,设置为中文;
调试器

新建一个工程:
调试器
]
三、程序设计
1.使用到的函数



  1. void GPIO_MODE_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_MODEx) //GPIO 模式
复制代码

GPIO_MODEx可设置为:输入模式、输出模式、复用模式和模拟模式
调试器
调试器
调试器
调试器

GPIO模拟配置原理图


  1. #define GPIO_MODE_INPUT       0x00000000UL
  2. #define GPIO_MODE_OUTPUT      0x00000001UL
  3. #define GPIO_MODE_AF          0x00000002UL
  4. #define GPIO_MODE_ANALOG      0x00000003UL
  5.  
  6. void GPIO_Toggle(GPIO_TypeDef *GPIOx,uint8_t PINx);  //GPIO 翻转
复制代码


2.GPIO其他函数


  1. void GPIO_MODE_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_MODEx); //GPIO 模式
  2. void GPIO_OutType_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_OTYPEx); //GPIO 输出模式
  3. void GPIO_InType_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_ITYPEx); //GPIO 输入模式
  4. void GPIO_PULL_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_PULLx); //GPIO 上拉
  5. void GPIO_OutSpeed_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_SPEEDx); //GPIO 压摆率
  6. void GPIO_AF_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_AFx); //GPIO 复用模式
  7. void GPIO_EXIT_MODE_Init(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_EXIT_MODEx); //GPIO 中断模式
  8. void GPIO_INTER_enable(GPIO_TypeDef *GPIOx,uint8_t PINx); //GPIO 中断使能
  9. void GPIO_INTER_disable(GPIO_TypeDef *GPIOx,uint8_t PINx); //GPIO 中断关闭
  10.  
  11. void GPIO_Write(GPIO_TypeDef *GPIOx,uint8_t PINx,uint32_t GPIO_PinState); //GPIO 输出
  12. uint8_t GPIO_Read(GPIO_TypeDef *GPIOx,uint8_t PINx); //GPIO 读输入
  13. void GPIO_Toggle(GPIO_TypeDef *GPIOx,uint8_t PINx);  //GPIO 翻转
  14.  
  15. void GPIO_EXIT_Init_case1(GPIO_TypeDef *GPIOx, uint8_t PINx); //检测高电平
  16. void GPIO_EXIT_Init_case2(GPIO_TypeDef *GPIOx, uint8_t PINx); //检测低电平
  17. void GPIO_EXIT_Init_case3(GPIO_TypeDef *GPIOx, uint8_t PINx); //检测上升沿
  18. void GPIO_EXIT_Init_case4(GPIO_TypeDef *GPIOx, uint8_t PINx); //检测下降沿
  19.  
  20.  
  21. void EXIT0_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  22. void EXIT1_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  23. void EXIT2_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  24. void EXIT3_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  25. void EXIT4_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  26. void EXIT9_5_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  27. void EXIT15_10_IRQHandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));
  28.  
  29. void CAW_IRQhandler(void) __attribute__((interrupt("SiFive-CLIC-preemptible")));//载波检测中断函数
  30. void CAW_Init(void);//载波检测配置
复制代码


3.修改DEMO里的程序
查看建立的模板程序,在里面找到Chapter 5 GPIO Test Init  的代码段,将第一句修改如下,设置PA8引脚的GPIO模式



  1. ///----Chapter 5 GPIO Test Init-----------------------------------------
  2. GPIO_MODE_Init(GPIOA,PIN8,GPIO_MODE_OUTPUT); //GPIO 模式   
复制代码


修改PA8引脚电平翻转程序,实现100ms电平翻转


  1. for(uint8_t i=0;i<10;i++)
  2.     {
  3.         GPIO_Toggle(GPIOA,PIN8); //GPIO 翻转
  4.         Delay32M_ms(100);
  5.     }
复制代码


修改主程序里while循环电平翻转程序,实现500ms电平翻转


  1. while(1)
  2.     {
  3.         Delay32M_ms(500);
  4.         GPIO_Toggle(GPIOA,PIN8);
  5.     }
复制代码


按下Ctrl+F9,完成程序编译完成的程序在工程文件的default文件夹里的elf文件。

四、烧录程序
调试器

使用CSM-ISP烧录程序, 同样在这条链接里面就可以找到相关介绍:https://mp.weixin.qq.com/s/El8-GMhWRSGGQWrMXCVcBA

五、总结
本次建立工程,很是顺利,代码风格跟STM32的HAL库比较像,上手很快,后续再对其他外设进行使用,完成项目设计。



出厂程序效果(开发板体验视频,详见作者原文链接内容)


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分