[开发板] CW32L010开发板尝鲜体验+点灯重现DEMO

[复制链接]
1200|5
 楼主| gaoyang9992006 发表于 2024-11-13 20:26 | 显示全部楼层 |阅读模式
CW32L010F8P6_StartKit_Schematic_V1.0.pdf (100.55 KB, 下载次数: 8)
CW32L010F8P6_StartKit_UserManual_CN_V1.0.pdf (4.19 MB, 下载次数: 3)
下载手册,并下载LIB
https://www.whxy.com/uploads/fil ... heralLib_V1.0.2.zip
先试试里面的DEMO blink,效果可以。
收到板子时候DEMO是LED闪缩,按下按钮剩下对应的LED闪缩,接下来完成它。
开发板上按钮
KEY1----PB04
KEY2----PA06

LED
LED1----PB03
LED2----PB02

在blink示例基础上编写代码
  1. /******************************************************************************/
  2. /** \file main.c
  3. **
  4. ** A detailed description is available at
  5. ** [url=home.php?mod=space&uid=48136]@link[/url] Sample Group Some description @endlink
  6. **
  7. **   - 2021-03-12  1.0  xiebin First version for Device Driver Library of Module.
  8. **
  9. ******************************************************************************/
  10. /*******************************************************************************
  11. *
  12. * 代码许可和免责信息
  13. * 武汉芯源半导体有限公司授予您使用所有编程代码示例的非专属的版权许可,您可以由此
  14. * 生成根据您的特定需要而定制的相似功能。根据不能被排除的任何法定保证,武汉芯源半
  15. * 导体有限公司及其程序开发商和供应商对程序或技术支持(如果有)不提供任何明示或暗
  16. * 含的保证或条件,包括但不限于暗含的有关适销性、适用于某种特定用途和非侵权的保证
  17. * 或条件。
  18. * 无论何种情形,武汉芯源半导体有限公司及其程序开发商或供应商均不对下列各项负责,
  19. * 即使被告知其发生的可能性时,也是如此:数据的丢失或损坏;直接的、特别的、附带的
  20. * 或间接的损害,或任何后果性经济损害;或利润、业务、收入、商誉或预期可节省金额的
  21. * 损失。
  22. * 某些司法辖区不允许对直接的、附带的或后果性的损害有任何的排除或限制,因此某些或
  23. * 全部上述排除或限制可能并不适用于您。
  24. *
  25. *******************************************************************************/
  26. /******************************************************************************
  27. * Include files
  28. ******************************************************************************/
  29. #include "../inc/main.h"

  30. /******************************************************************************
  31. * Local pre-processor symbols/macros ('#define')
  32. ******************************************************************************/
  33. //LED
  34. #define LED1_GPIO_PORT CW_GPIOB
  35. #define LED1_GPIO_PIN  GPIO_PIN_3

  36. #define LED2_GPIO_PORT CW_GPIOB
  37. #define LED2_GPIO_PIN  GPIO_PIN_2

  38. //KEY
  39. //KEY
  40. #define  KEY1_GPIO_PIN                   GPIO_PIN_4
  41. #define  KEY1_GPIO_PORT                  CW_GPIOB
  42. #define  KEY2_GPIO_PIN                   GPIO_PIN_6
  43. #define  KEY2_GPIO_PORT                  CW_GPIOA


  44. /******************************************************************************
  45. * Global variable definitions (declared in header file with 'extern')
  46. ******************************************************************************/

  47. /******************************************************************************
  48. * Local type definitions ('typedef')
  49. ******************************************************************************/

  50. /******************************************************************************
  51. * Local function prototypes ('static')
  52. ******************************************************************************/

  53. /******************************************************************************
  54. * Local variable definitions ('static')                                      *
  55. ******************************************************************************/

  56. /******************************************************************************
  57. * Local pre-processor symbols/macros ('#define')
  58. ******************************************************************************/

  59. /*****************************************************************************
  60. * Function implementation - global ('extern') and local ('static')
  61. ******************************************************************************/

  62. void Delay(uint16_t nCount);

  63. volatile uint8_t gKey1Status,gKey2Status;
  64. /**
  65. ******************************************************************************
  66. ** \brief  Main function of project
  67. **
  68. ** \return uint32_t return value, if needed
  69. **
  70. **
  71. **
  72. ******************************************************************************/
  73. int32_t main(void)
  74. {
  75.     GPIO_InitTypeDef GPIO_InitStruct = {0};

  76.     SYSCTRL_HSI_Enable(SYSCTRL_HSIOSC_DIV12);
  77.    
  78.     __SYSCTRL_GPIOA_CLK_ENABLE();
  79.     __SYSCTRL_GPIOB_CLK_ENABLE();  

  80.     GPIO_InitStruct.IT = GPIO_IT_NONE;
  81.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  82.     GPIO_InitStruct.Pins = LED1_GPIO_PIN;
  83.     GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);               
  84.     GPIO_InitStruct.Pins = LED2_GPIO_PIN;
  85.     GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);



  86.     GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;
  87.           GPIO_InitStruct.IT = GPIO_IT_FALLING;
  88.                 GPIO_InitStruct.Pins = KEY1_GPIO_PIN;
  89.     GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStruct);
  90.     GPIO_InitStruct.Pins = KEY2_GPIO_PIN;
  91.     GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStruct);
  92.                
  93.                 GPIOA_INTFLAG_CLR(bv6);
  94.                 NVIC_EnableIRQ(GPIOA_IRQn);
  95.                 GPIOB_INTFLAG_CLR(bv4);
  96.                 NVIC_EnableIRQ(GPIOB_IRQn);
  97.                
  98.     while (1)
  99.     {
  100.                         if( (gKey1Status == 1) && (gKey2Status == 0) )
  101.                         {
  102.         GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN);
  103.                                 GPIO_WritePin(LED2_GPIO_PORT,LED2_GPIO_PIN,GPIO_Pin_RESET);
  104.                         }
  105.                         else if( (gKey1Status == 0) && (gKey2Status == 1) )
  106.                         {
  107.         GPIO_TogglePin(LED2_GPIO_PORT, LED2_GPIO_PIN);
  108.                                 GPIO_WritePin(LED1_GPIO_PORT,LED1_GPIO_PIN,GPIO_Pin_RESET);
  109.                         }
  110.                         else
  111.                         {
  112.         GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN);
  113.         Delay(0xFFFF);
  114.         GPIO_TogglePin(LED2_GPIO_PORT, LED2_GPIO_PIN);
  115.                         }
  116.         Delay(0xFFFF);
  117.     }
  118. }

  119. /**
  120. * [url=home.php?mod=space&uid=247401]@brief[/url] 简单延时
  121. *
  122. * @param nCount
  123. */
  124. void Delay(__IO uint16_t nCount)
  125. {
  126.     /* Decrement nCount value */
  127.     while (nCount != 0)
  128.     {
  129.         nCount--;
  130.     }
  131. }

  132. void GPIOB_IRQHandlerCallback(void)
  133. {
  134.     if (CW_GPIOB->ISR_f.PIN4)
  135.     {
  136.                         gKey1Status = 1;
  137.                   gKey2Status = 0;
  138.                         GPIOB_INTFLAG_CLR(bv4);
  139.     }  
  140. }

  141. void GPIOA_IRQHandlerCallback(void)
  142. {
  143.     if (CW_GPIOA->ISR_f.PIN6)
  144.     {
  145.                         gKey1Status = 0;
  146.                   gKey2Status = 1;
  147.                         GPIOA_INTFLAG_CLR(bv6);
  148.     }  
  149. }

  150. /******************************************************************************
  151. * EOF (not truncated)
  152. ******************************************************************************/
  153. #ifdef  USE_FULL_ASSERT
  154. /**
  155.    * @brief  Reports the name of the source file and the source line number
  156.    *         where the assert_param error has occurred.
  157.    * @param  file: pointer to the source file name
  158.    * @param  line: assert_param error line source number
  159.    * @retval None
  160.    */
  161. void assert_failed(uint8_t* file, uint32_t line)
  162. {
  163.     /* USER CODE BEGIN 6 */
  164.     /* User can add his own implementation to report the file name and line number,
  165.        tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  166.        /* USER CODE END 6 */
  167. }
  168. #endif
将中断回调函数传入中断函数入口。
  1. /* USER CODE BEGIN Header */
  2. /**
  3.   ******************************************************************************
  4.   * [url=home.php?mod=space&uid=288409]@file[/url]    interrupts.c
  5.   * @brief   Interrupt Service Routines.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>© Copyright (c) 2021 CW.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   *
  13.   ******************************************************************************
  14.   */
  15. /* USER CODE END Header */

  16. /* Includes ------------------------------------------------------------------*/
  17. #include "../inc/interrupts_cw32l010.h"
  18. /* Private includes ----------------------------------------------------------*/
  19. /* USER CODE BEGIN Includes */
  20. /* USER CODE END Includes */


  21. /* Private typedef -----------------------------------------------------------*/
  22. /* USER CODE BEGIN TD */
  23. /* USER CODE END TD */


  24. /* Private define ------------------------------------------------------------*/
  25. /* USER CODE BEGIN PD */
  26. /* USER CODE END PD */


  27. /* Private macro -------------------------------------------------------------*/
  28. /* USER CODE BEGIN PM */
  29. /* USER CODE END PM */


  30. /* Private variables ---------------------------------------------------------*/
  31. /* USER CODE BEGIN PV */
  32. /* USER CODE END PV */


  33. /* Private function prototypes -----------------------------------------------*/
  34. /* USER CODE BEGIN PFP */
  35. extern void GPIOA_IRQHandlerCallback(void);
  36. extern void GPIOB_IRQHandlerCallback(void);
  37. /* USER CODE END PFP */


  38. /* Private user code ---------------------------------------------------------*/
  39. /* USER CODE BEGIN 0 */
  40. /* USER CODE END 0 */

  41. /* External variables --------------------------------------------------------*/
  42. /* USER CODE BEGIN EV */
  43. /* USER CODE END EV */


  44. /******************************************************************************/
  45. /*           Cortex-M0P Processor Interruption and Exception Handlers          */
  46. /******************************************************************************/
  47. /**
  48.   * @brief This function handles Non maskable interrupt.
  49.   */
  50. void NMI_Handler(void)
  51. {
  52.     /* USER CODE BEGIN NonMaskableInt_IRQn */

  53.     /* USER CODE END NonMaskableInt_IRQn */
  54. }

  55. /**
  56.   * @brief This function handles Hard fault interrupt.
  57.   */
  58. void HardFault_Handler(void)
  59. {
  60.     /* USER CODE BEGIN HardFault_IRQn */

  61.     /* USER CODE END HardFault_IRQn */
  62.     while (1)
  63.     {
  64.         /* USER CODE BEGIN W1_HardFault_IRQn */

  65.         /* USER CODE END W1_HardFault_IRQn */
  66.     }
  67. }


  68. /**
  69.   * @brief This function handles System service call via SWI instruction.
  70.   */
  71. void SVC_Handler(void)
  72. {
  73.     /* USER CODE BEGIN SVCall_IRQn */

  74.     /* USER CODE END SVCall_IRQn */
  75. }


  76. /**
  77.   * @brief This function handles Pendable request for system service.
  78.   */
  79. void PendSV_Handler(void)
  80. {
  81.     /* USER CODE BEGIN PendSV_IRQn */

  82.     /* USER CODE END PendSV_IRQn */
  83. }


  84. /******************************************************************************/
  85. /* CW030 Peripheral Interrupt Handlers                                        */
  86. /* Add here the Interrupt Handlers for the used peripherals.                  */
  87. /* For the available peripheral interrupt handler names,                      */
  88. /* please refer to the startup file (startup_ps030.s).                        */
  89. /******************************************************************************/

  90. /**
  91. * @brief This funcation handles WDT
  92. */
  93. void WDT_IRQHandler(void)
  94. {
  95.     /* USER CODE BEGIN */

  96.     /* USER CODE END */
  97. }

  98. /**
  99. * @brief This funcation handles LVD
  100. */
  101. void LVD_IRQHandler(void)
  102. {
  103.     /* USER CODE BEGIN */

  104.     /* USER CODE END */
  105. }

  106. /**
  107. * @brief This funcation handles RTC
  108. */
  109. void RTC_IRQHandler(void)
  110. {
  111.     /* USER CODE BEGIN */

  112.     /* USER CODE END */
  113. }

  114. /**
  115. * @brief This funcation handles FLASHRAM
  116. */
  117. void FLASHRAM_IRQHandler(void)
  118. {
  119.     /* USER CODE BEGIN */

  120.     /* USER CODE END */
  121. }

  122. /**
  123. * @brief This funcation handles SYSCTRL
  124. */
  125. void SYSCTRL_IRQHandler(void)
  126. {
  127.     /* USER CODE BEGIN */

  128.     /* USER CODE END */
  129. }

  130. /**
  131. * @brief This funcation handles GPIOA
  132. */
  133. void GPIOA_IRQHandler(void)
  134. {
  135.     /* USER CODE BEGIN */
  136.         GPIOA_IRQHandlerCallback();
  137.     /* USER CODE END */
  138. }

  139. /**
  140. * @brief This funcation handles GPIOB
  141. */
  142. void GPIOB_IRQHandler(void)
  143. {
  144.     /* USER CODE BEGIN */
  145.         GPIOB_IRQHandlerCallback();

  146.     /* USER CODE END */
  147. }


  148. /**
  149. * @brief This funcation handles ADC
  150. */
  151. void ADC_IRQHandler(void)
  152. {
  153.     /* USER CODE BEGIN */

  154.     /* USER CODE END */
  155. }

  156. /**
  157. * @brief This funcation handles ATIM
  158. */
  159. void ATIM_IRQHandler(void)
  160. {
  161.     /* USER CODE BEGIN */

  162.     /* USER CODE END */
  163. }

  164. /**
  165. * @brief This funcation handles VC1
  166. */
  167. void VC1_IRQHandler(void)
  168. {
  169.     /* USER CODE BEGIN */

  170.     /* USER CODE END */
  171. }

  172. /**
  173. * @brief This funcation handles VC2
  174. */
  175. void VC2_IRQHandler(void)
  176. {
  177.     /* USER CODE BEGIN */

  178.     /* USER CODE END */
  179. }

  180. /**
  181. * @brief This funcation handles GTIM1
  182. */
  183. void GTIM1_IRQHandler(void)
  184. {
  185.     /* USER CODE BEGIN */

  186.     /* USER CODE END */
  187. }

  188. /**
  189. * @brief This funcation handles LPTIM
  190. */
  191. void LPTIM_IRQHandler(void)
  192. {
  193.     /* USER CODE BEGIN */

  194.     /* USER CODE END */
  195. }

  196. /**
  197. * @brief This funcation handles BTIM1
  198. */
  199. void BTIM1_IRQHandler(void)
  200. {
  201.     /* USER CODE BEGIN */

  202.     /* USER CODE END */
  203. }

  204. /**
  205. * @brief This funcation handles BTIM2
  206. */
  207. void BTIM2_IRQHandler(void)
  208. {
  209.     /* USER CODE BEGIN */

  210.     /* USER CODE END */
  211. }

  212. /**
  213. * @brief This funcation handles BTIM3
  214. */
  215. void BTIM3_IRQHandler(void)
  216. {
  217.     /* USER CODE BEGIN */

  218.     /* USER CODE END */
  219. }

  220. /**
  221. * @brief This funcation handles I2C1
  222. */
  223. void I2C1_IRQHandler(void)
  224. {
  225.     /* USER CODE BEGIN */

  226.     /* USER CODE END */
  227. }

  228. /**
  229. * @brief This funcation handles SPI1
  230. */
  231. void SPI1_IRQHandler(void)
  232. {
  233.     /* USER CODE BEGIN */

  234.     /* USER CODE END */
  235. }

  236. /**
  237. * @brief This funcation handles UART1
  238. */
  239. void UART1_IRQHandler(void)
  240. {
  241.     /* USER CODE BEGIN */

  242.     /* USER CODE END */
  243. }

  244. /**
  245. * @brief This funcation handles UART2
  246. */
  247. void UART2_IRQHandler(void)
  248. {
  249.     /* USER CODE BEGIN */

  250.     /* USER CODE END */
  251. }


  252. /**
  253. * @brief This funcation handles FAULT
  254. */
  255. void CLKFAULT_IRQHandler(void)
  256. {
  257.     /* USER CODE BEGIN */

  258.     /* USER CODE END */
  259. }

  260. /************************ (C) COPYRIGHT CW *****END OF FILE****/
编译烧录,功能正常,复位后两个都在闪烁。按下KEY1后只有KEY1在闪烁,按下KEY2后,只有KEY2在闪烁。
小小蚂蚁举千斤 发表于 2024-11-22 09:44 来自手机 | 显示全部楼层
GPIO是非常实用的基础应用
星辰大海不退缩 发表于 2024-11-22 11:23 来自手机 | 显示全部楼层
楼主的设计很适合新手
中国龙芯CDX 发表于 2024-11-24 19:21 | 显示全部楼层
点灯程序新手必学
AdaMaYun 发表于 2024-12-10 11:26 | 显示全部楼层
很好的案例分享
LOVEEVER 发表于 2024-12-11 17:39 | 显示全部楼层
demo案例还是非常不错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部