描述
<p style="line-height:1.8;">注:* 为必填项</p>
<h3 style="line-height:1.8;">* 1、项目功能介绍</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> 本项目融合了单片机控制、交互按键、随机数算法及低功耗设计,实现高可靠性的电子化骰子装置。在传统桌面游戏如大富翁、卡坦岛等中,电子骰子可以替代传统的实体骰子。采用LED显示技术的电子骰子成本低、显示清晰,能准确呈现点数,方便玩家进行游戏。电子骰子的稳定性和准确性能提高游戏的公平性和流畅性。</span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*2、项目属性</h3>
<hr>
<p style="line-height:1.8;">原创项目</p>
<h3 style="line-height:1.8;">* 3、开源协议</h3>
<hr>
<p style="line-height:1.8;"><span style="background-color:#ffffff;color:#212529;font-family:'-apple-system', BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;font-size:16px;">开源协议GPL3.0</span></p>
<h3 style="line-height:1.8;">*4、硬件部分</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;"> 使用3V纽扣电池供电,使用低功耗MCU的随机数发生器功能,结果由12颗LED显示,与用户交互的使用轻触按键。用户每按下一次按键后对应相应数字的LED灯点亮的,长时间不按按键系统进入低功耗模式,用户再次按下按键后系统被唤醒并进入工作模式。主要部件包括上下亚克力面板,PCBA和纽扣电池。</span></p>
<h3 style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/siVTS34VqPiUzyTXpwvwj8ICfi671n7mXBr8QicP.png" alt="" width="1190" height="845"></h3>
<h3 style="line-height:1.8;"> </h3>
<p><img src="//image.lceda.cn/pullimage/xsVfAyndmu6uSVC5h7ghpMEFAyYe4df3lHxe4Xw3.png" alt="" width="960" height="960"></p>
<p><img src="//image.lceda.cn/pullimage/MEFAo2yPudBAYZ5Xf16CEjJnfcsznyd6hk89rnkI.png" alt="" width="960" height="960"></p>
<h3 style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/2WJYSbXQSzdaE1jn2N8KZLtKOTC5RwwEfRaMBRor.png" alt="" width="956" height="895"></h3>
<p><img src="//image.lceda.cn/pullimage/TMhQ8C9hq0nEbPvMsxUB8prUJW9rJjcznFqW0L4L.png" alt="" width="1195" height="895"></p>
<p><img src="//image.lceda.cn/pullimage/vucrqA0k3ilaVOpPHBTNvekITRc6fUzYg2986GEr.png" alt="" width="1194" height="895"></p>
<h3 style="line-height:1.8;">*5、软件部分</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#95a5a6;">软件比较简单基本流程如下:</span></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">1.系统初始化 2.读取用户按键状态 3.生成随机数 4. 点亮对应的LED 5.等待用户再次按下用户按键。</span></p>
<div>/**</div>
<div> *******************************************************************************</div>
<div> </div>
<div> *******************************************************************************</div>
<div> */</div>
<div> </div>
<div>/******************************************************************************</div>
<div> * Include files</div>
<div> ******************************************************************************/</div>
<div>#include "gpio.h"</div>
<div>#include "ddl.h"</div>
<div>#include "trng.h"</div>
<div>#include</div>
<div>#include</div>
<div>#include "lpm.h"</div>
<div>#include "lpuart.h"</div>
<div>#include "sysctrl.h"</div>
<div>#include "flash.h"</div>
<div> </div>
<div>/*******************************************************************************</div>
<div> * Local type definitions ('typedef')</div>
<div> ******************************************************************************/</div>
<div>/*******************************************************************************</div>
<div> * Local pre-processor symbols/macros ('#define')</div>
<div> ******************************************************************************/</div>
<div>/*******************************************************************************</div>
<div> * Global variable definitions (declared in header file with 'extern')</div>
<div> ******************************************************************************/</div>
<div>/*******************************************************************************</div>
<div> * Local function prototypes ('static')</div>
<div> ******************************************************************************/</div>
<div>static void GpioConfig(void);</div>
<div>static void LpUartConfig(void);</div>
<div>void led_off(void);</div>
<div>void led_on(void);</div>
<div>void led_on_off(void);</div>
<div>void led_on_off_2(void);</div>
<div>static void GpioLowPowerConfig(void);</div>
<div>static void GpioUserKeyConfig(void);</div>
<div>uint32_t au32Data0[2] = { 0xFFFFFFFFu, 0xFFFFFFFFu };</div>
<div>__IO uint32_t saved_number[1000] = { 0 };</div>
<div>uint32_t counter = 0;</div>
<div>__IO uint32_t key_status = 0;</div>
<div>#define delay_time_ms 100</div>
<div>uint32_t time_counter = 0;</div>
<div>/*******************************************************************************</div>
<div> * Local variable definitions ('static')</div>
<div> ******************************************************************************/</div>
<div>/*******************************************************************************</div>
<div> * Function implementation - global ('extern') and local ('static')</div>
<div> ******************************************************************************/</div>
<div>/**</div>
<div> * @brief Main function</div>
<div> * @retval int32_t return value, if needed</div>
<div> */</div>
<div>int main(void) {</div>
<div> </div>
<div> DDL_Delay1ms(2000);</div>
<div>GpioConfig(); </div>
<div>/* LPUART配置 */</div>
<div>// LpUartConfig();</div>
<div>// STK_LedConfig(); /* LED端口配置 */</div>
<div>// STK_UserKeyConfig(); /* USER KEY端口配置 */</div>
<div>GpioUserKeyConfig();</div>
<div> /* =============================================== */</div>
<div> /* ============== WARNING ============ */</div>
<div> /* =============================================== */</div>
<div> /* 本样例程序会进入深度休眠模式,因此以下代码起防护作用*/</div>
<div> /* (防止进入深度休眠后芯片调试功能不能再次使用) */</div>
<div> /* 在使用本样例时,禁止在没有唤醒机制的情况下删除以下代码 */</div>
<div>/* 打开RNG模块时钟门控 */</div>
<div>SYSCTRL_PeriphClockEnable(PeriphClockTrng);</div>
<div> </div>
<div>/* 上电第一次生成随机数必须使用初始化函数生成并获取随机数 */</div>
<div>/* 上电第一次随机数生成并获取 */</div>
<div>TRNG_Init();</div>
<div> </div>
<div>au32Data0[0] = TRNG_Data0Get();</div>
<div>au32Data0[1] = TRNG_Data1Get();</div>
<div> </div>
<div>/* 随机数不应该为全0或全1 */</div>
<div>if ((au32Data0[0] != 0u) && (au32Data0[1] != 0u)</div>
<div>&& (au32Data0[0] != 0xFFFFFFFFu) && (au32Data0[1] != 0xFFFFFFFFu)) {</div>
<div>;</div>
<div>} else {</div>
<div>while (1) {</div>
<div>;</div>
<div>}</div>
<div>}</div>
<div> </div>
<div>led_off();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>led_on();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>led_off();</div>
<div> </div>
<div>while (1) {</div>
<div> </div>
<div>if ((key_status == 0) & STK_USER_KEY_PRESSED()) {</div>
<div>DDL_Delay1ms(50);</div>
<div>if ( STK_USER_KEY_PRESSED()) {</div>
<div>key_status = 1;</div>
<div>time_counter = 1;</div>
<div>}</div>
<div>} else</div>
<div>{</div>
<div>key_status = 0;</div>
<div> if(time_counter++ %1000000 == 0)</div>
<div> {</div>
<div> led_on_off_2();</div>
<div> time_counter = 1;</div>
<div> key_status = 3;// 睡眠状态</div>
<div> FLASH_LowPowerEnable(); /* 配置FLASH为低功耗模式 */</div>
<div> GpioLowPowerConfig(); /* 配置Demo板上所有引脚配置为模拟端口(除按键、LED端口外),避免端口漏电 */</div>
<div> LPM_GotoDeepSleep(FALSE); /* 进入低功耗模式——深度休眠(使能唤醒后退出中断自动休眠特性) */</div>
<div> }</div>
<div>}</div>
<div>if(key_status == 2 )</div>
<div>{</div>
<div>FLASH_LowPowerDisable();</div>
<div>GpioConfig();</div>
<div>key_status = 0; //工作状态</div>
<div>}</div>
<div>if (key_status == 1) {</div>
<div>/* 如果在使用中有多次生成随机数的需要,则在第一次生产随机数后通过如下流程实现和获取随机数 */</div>
<div>/* 非上电第一次随机数生成并获取 */</div>
<div>TRNG_Generate();</div>
<div>DDL_Delay1ms(100);</div>
<div>/* 两次生产的随机数不相同 */</div>
<div>if (au32Data0[0] != TRNG_Data0Get()) {</div>
<div>if (au32Data0[1] != TRNG_Data1Get()) {</div>
<div>;</div>
<div>} else {</div>
<div>while (1) {</div>
<div>// printf("RANDOM NUMBER ERROR\r\n");</div>
<div>}</div>
<div>}</div>
<div>} else {</div>
<div>while (1) {</div>
<div>// printf("RANDOM NUMBER ERROR\r\n");</div>
<div>}</div>
<div>}</div>
<div>au32Data0[0] = TRNG_Data0Get();</div>
<div>au32Data0[1] = TRNG_Data1Get();</div>
<div>TRNG_Generate();</div>
<div>// printf("random number is %lu\r\n", (unsigned int) au32Data0[0] > 16);</div>
<div>// printf("random number1 is %lu\r\n", au32Data0[0] % 6);</div>
<div>// printf("random number2 is %lu\r\n", au32Data0[1]);</div>
<div>saved_number[counter++] = au32Data0[0];</div>
<div>if (counter > 999) {</div>
<div>counter = 0;</div>
<div>}</div>
<div> </div>
<div>led_off();</div>
<div>switch (au32Data0[0] % 12) {</div>
<div>case 0:</div>
<div>GPIO_PA00_SET();</div>
<div>break;</div>
<div>case 1:</div>
<div>GPIO_PA02_SET();</div>
<div>break;</div>
<div>case 2:</div>
<div>GPIO_PA03_SET();</div>
<div>break;</div>
<div>case 3:</div>
<div>GPIO_PA04_SET();</div>
<div>break;</div>
<div>case 4:</div>
<div>GPIO_PA05_SET();</div>
<div>break;</div>
<div>case 5:</div>
<div>GPIO_PA06_SET();</div>
<div>break;</div>
<div>case 6:</div>
<div>GPIO_PA07_SET();</div>
<div>break;</div>
<div>case 7:</div>
<div>GPIO_PA08_SET();</div>
<div>break;</div>
<div>case 8:</div>
<div>GPIO_PA09_SET();</div>
<div>break;</div>
<div>case 9:</div>
<div>GPIO_PA10_SET();</div>
<div>break;</div>
<div>case 10:</div>
<div>GPIO_PA11_SET();</div>
<div>break;</div>
<div>case 11:</div>
<div>GPIO_PA01_SET();</div>
<div>break;</div>
<div> </div>
<div>}</div>
<div> </div>
<div>}</div>
<div>}</div>
<div>return 0;</div>
<div>}</div>
<div> </div>
<div>/**</div>
<div> * @brief GPIO</div>
<div> * @retval None</div>
<div> */</div>
<div>static void GpioConfig(void) {</div>
<div>stc_gpio_init_t stcGpioInit = { 0 };</div>
<div> </div>
<div>SYSCTRL_PeriphClockEnable(PeriphClockGpio); </div>
<div> </div>
<div>GPIO_StcInit(&stcGpioInit);</div>
<div>stcGpioInit.bOutputValue = TRUE; </div>
<div>stcGpioInit.u32Mode = GPIO_MD_OUTPUT_PP; </div>
<div>stcGpioInit.u32PullUp = GPIO_PULL_NONE; </div>
<div>stcGpioInit.u32Pin = GPIO_PIN_00 | GPIO_PIN_02 | GPIO_PIN_03 | GPIO_PIN_04</div>
<div>| GPIO_PIN_01 | GPIO_PIN_05 | GPIO_PIN_08 | GPIO_PIN_09</div>
<div>| GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_06 | GPIO_PIN_07; </div>
<div>GPIOA_Init(&stcGpioInit); </div>
<div> </div>
<div>stc_gpio_init_t stcGpioInit1 = { 0 };</div>
<div> </div>
<div>SYSCTRL_PeriphClockEnable(PeriphClockGpio);</div>
<div> </div>
<div>/* 配置PA01为LPUART1_TX */</div>
<div>// GPIO_StcInit(&stcGpioInit1);</div>
<div>// stcGpioInit1.u32Mode = GPIO_MD_OUTPUT_PP;</div>
<div>// stcGpioInit1.u32PullUp = GPIO_PULL_UP;</div>
<div>// stcGpioInit1.bOutputValue = TRUE;</div>
<div>// stcGpioInit1.u32Pin = GPIO_PIN_01;</div>
<div>// GPIO_Init(GPIOA, &stcGpioInit1);</div>
<div>// GPIO_PA01_AF_LPUART1_TXD();</div>
<div>}</div>
<div> </div>
<div>/**</div>
<div> * @brief LPUART配置</div>
<div> * @retval None</div>
<div> */</div>
<div>static void LpUartConfig(void) {</div>
<div>stc_lpuart_init_t stcLpuartInit;</div>
<div> </div>
<div>/* 外设模块时钟使能 */</div>
<div>SYSCTRL_PeriphClockEnable(PeriphClockLpuart1);</div>
<div> </div>
<div>/* LPUART 初始化 */</div>
<div>LPUART_StcInit(&stcLpuartInit); /* 结构体初始化 */</div>
<div>stcLpuartInit.u32StopBits = LPUART_STOPBITS_1; /* 1停止位 */</div>
<div>stcLpuartInit.u32FrameLength = LPUART_FRAME_LEN_8B_PAR; /* 数据8位,奇偶校验1位 */</div>
<div>stcLpuartInit.u32Parity = LPUART_B8_PARITY_EVEN; /* 偶校验 */</div>
<div>stcLpuartInit.u32TransMode = LPUART_MODE_TX_RX; /* 收发模式 */</div>
<div>stcLpuartInit.stcBaudRate.u32SclkSelect = LPUART_SCLK_SEL_PCLK; /* 传输时钟源 */</div>
<div>stcLpuartInit.stcBaudRate.u32Sclk = SYSCTRL_HclkFreqGet(); /* HCLK获取 */</div>
<div>stcLpuartInit.stcBaudRate.u32Baud = 9600; /* 波特率 */</div>
<div>LPUART_Init(LPUART1, &stcLpuartInit);</div>
<div>LPUART_IntFlagClearAll(LPUART1); /* 清除所有状态标志 */</div>
<div>}</div>
<div> </div>
<div>/******************************************************************************</div>
<div> * EOF (not truncated)</div>
<div> ******************************************************************************/</div>
<div>int _write(int32_t fd, char* ptr, int32_t len) {</div>
<div>if (fd == STDOUT_FILENO || fd == STDERR_FILENO) {</div>
<div>int32_t i = 0;</div>
<div>while (i
<div> </div>
<div>LPUART_TransmitInt(LPUART1, (uint8_t) ptr[i++]);</div>
<div>}</div>
<div>}</div>
<div>return len;</div>
<div>}</div>
<div> </div>
<div>void led_off(void) {</div>
<div> </div>
<div>GPIO_PA00_RESET();</div>
<div>GPIO_PA01_RESET();</div>
<div>GPIO_PA02_RESET();</div>
<div>GPIO_PA03_RESET();</div>
<div>GPIO_PA04_RESET();</div>
<div>GPIO_PA05_RESET();</div>
<div>GPIO_PA06_RESET();</div>
<div>GPIO_PA07_RESET();</div>
<div>GPIO_PA08_RESET();</div>
<div>GPIO_PA09_RESET();</div>
<div>GPIO_PA10_RESET();</div>
<div>GPIO_PA11_RESET();</div>
<div>}</div>
<div> </div>
<div>void led_on(void) {</div>
<div> </div>
<div>GPIO_PA00_SET();</div>
<div>GPIO_PA01_SET();</div>
<div>GPIO_PA02_SET();</div>
<div>GPIO_PA03_SET();</div>
<div>GPIO_PA04_SET();</div>
<div>GPIO_PA05_SET();</div>
<div>GPIO_PA06_SET();</div>
<div>GPIO_PA07_SET();</div>
<div>GPIO_PA08_SET();</div>
<div>GPIO_PA09_SET();</div>
<div>GPIO_PA10_SET();</div>
<div>GPIO_PA11_SET();</div>
<div>}</div>
<div>void led_on_off(void) {</div>
<div> </div>
<div>GPIO_PA00_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA01_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA02_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA03_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA04_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA05_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA06_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA07_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA08_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA09_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA10_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA11_SET();</div>
<div> </div>
<div>GPIO_PA00_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA01_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA02_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA03_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA04_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA05_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA06_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA07_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA08_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA09_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA10_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA11_RESET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>}</div>
<div> </div>
<div> </div>
<div>void led_on_off_2(void) {</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA00_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA00_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA01_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA01_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA02_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA02_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA03_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA03_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA04_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA04_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA05_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA05_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA06_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA06_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA07_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA07_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA08_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA08_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA09_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA09_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA10_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA10_RESET();</div>
<div> </div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA11_SET();</div>
<div>DDL_Delay1ms(delay_time_ms);</div>
<div>GPIO_PA11_RESET();</div>
<div>}</div>
<div> </div>
<div> </div>
<div>void PortA_IRQHandler(void)</div>
<div>{</div>
<div> if (TRUE == GPIO_IntFlagGet(STK_USER_PORT, STK_USER_PIN)) /* 获取中断状态 */</div>
<div> {</div>
<div> if(key_status == 3) //之前在睡眠状态</div>
<div> {</div>
<div> key_status = 2; // 发生中断后进入唤醒状态</div>
<div> }</div>
<div> </div>
<div> GPIO_IntFlagClear(STK_USER_PORT, STK_USER_PIN); /* 清除中断 */</div>
<div> }</div>
<div>}</div>
<div> </div>
<div> </div>
<div>/**</div>
<div> * @brief GPIO低功耗配置</div>
<div> * @retval None</div>
<div> */</div>
<div>static void GpioLowPowerConfig(void)</div>
<div>{</div>
<div> SYSCTRL_PeriphClockEnable(PeriphClockGpio); /* 打开GPIO外设时钟门控 */</div>
<div> SYSCTRL_FuncEnable(SYSCTRL_FUNC_SWD_USE_IO); /* SWD设置为GPIO */</div>
<div> </div>
<div> GPIOA->ADS = 0xEFFEu; /* 配置为模拟端口(除按键、LED端口外) */</div>
<div>}</div>
<div> </div>
<div>/**</div>
<div> * @brief GPIO按键配置</div>
<div> * @retval None</div>
<div> */</div>
<div>static void GpioUserKeyConfig(void)</div>
<div>{</div>
<div> stc_gpio_init_t stcGpioInit = {0};</div>
<div> </div>
<div> SYSCTRL_PeriphClockEnable(PeriphClockGpio); /* 打开GPIO外设时钟门控 */</div>
<div> </div>
<div> GPIO_StcInit(&stcGpioInit); /* 结构体变量初始值初始化 */</div>
<div> stcGpioInit.u32Mode = GPIO_MD_INT_INPUT; /* 端口方向配置 */</div>
<div> stcGpioInit.u32PullUp = GPIO_PULL_NONE; /* 端口上下拉配置 */</div>
<div> stcGpioInit.u32ExternInt = GPIO_EXTI_FALLING; /* 端口外部中断触发方式配置 */</div>
<div> stcGpioInit.u32Pin = STK_USER_PIN; /* 端口引脚配置 */</div>
<div> GPIOA_Init(&stcGpioInit); /* GPIO USER KEY初始化 */</div>
<div> EnableNvic(PORTA_IRQn, IrqPriorityLevel3, TRUE); /* 使能端口PORTA系统中断 */</div>
<div>}</div>
<p> </p>
<h3 style="line-height:1.8;">*6、BOM清单</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">请输入内容…</span></p>
<p style="line-height:1.8;">详见BOM清单,主要物料为单片机、LED、电池和外壳等。<img src="//image.lceda.cn/pullimage/hHZ1Domqqdt5usJYd5mesVLVcthT0ZVwW85PS14b.png" alt="" width="1200" height="655"></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">注:项目涉及的BOM清单。在<span style="text-decoration:underline;"><a href="https://lceda.cn/editor" target="_blank">嘉立创EDA</a> </span>生成/上传设计文件后,BOM将自动生成至项目详情;建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。 </span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/frHAkEFslfRiy7H473pXKPHeHcw6sSMeOAFifeUi.png" alt="" width="973" height="896"></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">请上传包含大赛logo的项目图片,logo以丝印形式印刷在PCB上面。</span></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">点击zip下载大赛logo标识! <span style="text-decoration:underline;"><a href="https://image.lceda.cn/easyedaResource/images/d1bbfd69f9404f56901a0e7b849b7245.rar" target="_blank">(大赛标识).zip</a></span></span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p>
<p style="line-height:1.8;"><span style="color:#95a5a6;font-size:14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="font-size:14px;"><a href="/posts/42551e8f2f2548cabc1c36626a42da94" target="_blank">前往查看更多详情 ></a></span></p>
<p style="line-height:1.8;"> </p>
</div>
评论(2)