【小华工控新品HC32F448】07.使用XHCode基于HC32F448创建闪烁LED基础工程
<div class='showpostmsg'> 本帖最后由 xld0932 于 2024-2-4 14:27 编辑<p><strong>1.概述</strong></p>
<p>XHCode是小华半导体推出的一款协助用户配置生成XHSC MCU基础代码的软件工具,它包含了管脚和模块配置、时钟配置和工程配置3部分,今天来基于HC32F448系列MCU,使用XHCode创建一个闪烁LED的基础工程,来记录一下使用体验。</p>
<p> </p>
<p><strong>2.安装XHCode</strong></p>
<p>从小华半导体官网上可以下载最新版本的XHCode工具,双击安装文件,根据提示进行安装,这个安装过程比较简单,如下所示:</p>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<p> </p>
<p><strong>3.创建闪烁LED工程</strong></p>
<p>3.1.双击XHSC XHCode软件,在左上角型号的下拉菜单中选择HC32F448MCTI-LQFP80,如下所示:</p>
<div style="text-align: center;"></div>
<p> </p>
<p>3.2.管脚和模块配置界面:在左侧MCU引脚配置图中先配置一些基础配置,比如PA13\PA14配置为程序调试/烧录引脚、配置PC14/PC15为外部32.768晶振的输入端口、配置PH0/PH1为外部主晶振的输入端口;然后根据EV_F448_LQ80_Rev1.0开发板的原理图,将PA2配置为GPIO-Output输出模式,如下所示:</p>
<div style="text-align: center;"></div>
<p>在配置GPIO时,发现现在还有少部分的外设无法配置,可能需要后面更新版本后才能配置吧;但对于GPIO来说,没有重命名Lable的功能,觉得有些不方便,将PA2添加一个LED的Lable,会显示更直观,更清楚不是么……</p>
<p> </p>
<p>3.3.时钟配置界面:当选择HC32F448MCTI-LQFP80这颗芯片型号后,系统的时钟和总线频率配置大部分都是依据最大上限来配置的,个别没有达到上限的也是因为计算分频倍数的关系,同时满足不了多端的要求,就优先满足一边了,如下图所示:</p>
<div style="text-align: center;"></div>
<p>在看这个时钟配置时,默认PLLSRC就是选用的XTAL,当在配置管脚和模块配置界面还没有配置时钟引脚时,这边就是这样的默认选择了,感觉管脚和模块配置界面与时钟配置界面的功能并没有联动起来,感觉有点功能欠缺的意思;另外就是在时钟配置界面上,对于频率的显示单位也没有统一起来,一部分单位是MHz,一部分的单位却是KHz,看上去有些杂乱。</p>
<p> </p>
<p>3.4.工程配置界面:我们在工程名称中输入相应的工程名,选择工程IDE类型为MDK(这个工具支持KEIL MKD、IAR EWARM、Eclipse三个集成开发环境的工程生成),指定工程保存的位置以及驱动库(DDL)位置,先点击右上角的保存配置保存当前的工程,然后再点击右上角的生成代码,依据我们的工程配置生成相应的代码,如下所示:</p>
<div style="text-align: center;">
<div style="text-align: center;"></div>
</div>
<p>需要注意的是,驱动库(DLL)位置不是指DLL下载存放的位置,当前这款工具还没有根据芯片型号自动下载对应驱动库程序的功能,而是需要我们提前下载好DLL驱动库,然后这边指定位置就是我们存放下载的DLL驱动库的位置:</p>
<p> </p>
<p>3.5.生成的代码:我们发现生成的代码目录如下所示,有main和MDK两个文件夹,后面我才确认这边的main文件夹是多余的,因为MDK工程中的源程序,都是存放在MDK目录中的,所以这边需要原厂制作工具的再确认下:</p>
<div style="text-align: center;"></div>
<p> </p>
<p><strong>4.编译工程</strong></p>
<p>4.1.打开MDK目录下的LED.uvprojx工程文件,如下所示:</p>
<div style="text-align: center;"></div>
<p> </p>
<p>4.2.我们先想看一工程的配置,点击工具栏的配置按钮,在弹出配置窗口的Debug选项卡中确认使用的调试下载工具,然后再通过Utilities选项卡确认下载选项,如下所示:</p>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<p>我们需要将Reset and Run勾选上,这样我们在程序下载完成后,芯片就可以自动复位并运行了。</p>
<p> </p>
<p>4.3.我们点击工具栏的工程编译按钮,编译结果发现有2处Error,对于官方示例程序,发现没有配置这2条语句的选项,所以就先屏蔽掉了,结果编译就顺利通过了:</p>
<div style="text-align: center;"></div>
<p>自动生成的代码会产生编译错误实属不应该哈,大多数使用自动生成工具的来说,就是想快速的生产工程,对底层配置不想深究太多,出错后就不得不多花时间去检查了……</p>
<p> </p>
<p><strong>5.应用程序</strong></p>
<p>在编译无误的工程上,我们就可以添加自己的应用程序了,因为闪烁LED的功能比较简单,我们就直接在main函数的for循环里添加了,每间隔500ms,LED显示状态翻转一次:</p>
<pre>
<code class="language-cpp">/**
* <a href="home.php?mod=space&uid=159083" target="_blank">@brief </a> Main function of the project
* @paramNone
* @retval int32_t return value, if needed
*/
int32_t main(void)
{
/* Register write unprotected for some required peripherals. */
LL_PERIPH_WE(LL_PERIPH_ALL);
//Clock Config
App_ClkCfg();
//Port Config
App_PortCfg();
/* Register write protected for some required peripherals. */
LL_PERIPH_WP(LL_PERIPH_ALL);
for (;;) {
GPIO_TogglePins(GPIO_PORT_A, GPIO_PIN_02);
DDL_DelayMS(500);
}
}</code></pre>
<p>最后编译无误,下载运行OK哦!</p>
<p> </p>
<p><strong>6.总结</strong></p>
<p>XHCode是一款用来便于开发的软件,理应做到配置功能齐全、生成代码无误,要做到这一点,XHCode还有很多工作需要去做,去测试、去完善、去适配;希望这款工具越做越好,尽早的可以给开发工程师带来便利!</p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>可以把这个贴当做用XHCode创建一个闪烁LED的基础工程的教程啦</p>
Jacktang 发表于 2024-2-5 07:46
可以把这个贴当做用XHCode创建一个闪烁LED的基础工程的教程啦
<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan41.gif" width="48" /></p>
<p>从哪里下载呢?</p>
<p><strong>出HC32F005C6UA</strong></p>
<p>⚫ 48MHz Cortex-M0+ 32 位 CPU 平台</p>
<p>⚫ HC32L130/HC32L136 系列具有灵活的功耗管理系统,超低功耗性能</p>
<p>– 0.5μA @ 3V深度 休眠 模式 所有时钟关闭上电复位有效, IO状态保持, IO中断有效,所有寄存器, RAM和 CPU 数据保存状态时的功耗</p>
<p>– 0.9μA @3V深度 休眠 模式 + RTC工作</p>
<p>– 7μA @32.768KHz低速工作模式 CPU 和外设运行,从 Flash运行程序</p>
<p>– 35μA/MHz@3V@24MHz休眠 模式 CPU 停止,外设运行,主时钟运行</p>
<p>– 130μA/MHz@3V@24MHz工作模式 CPU和外设运行,从 Flash运行程序</p>
<p>– 4μS超低功耗唤醒时间 使模式切换更加灵活高效,系统反应更为敏捷</p>
<p>⚫ 64K字节 Flash存储器,具有擦写保护功能</p>
<p>⚫ 8K字节 RAM存储器,附带奇偶校验,增强系统的稳定性</p>
<p>⚫ 通用 I/O 引脚 (56IO/64pin, 40IO/48pin,26IO/32pin, 23IO/28pin)</p>
<p>⚫ 时钟、晶振</p>
<p>– 外部高速晶振 4 ~ 32MHz</p>
<p>– 外部低速晶振 32.768KHz</p>
<p>– 内部高速时钟 4/8/16/22.12/24MHz</p>
<p>– 内部低速时钟 32.8/38.4KHz</p>
<p>– PLL时钟 8 ~ 48MHz</p>
<p>– 硬件支持内外时钟校准和监控</p>
<p>⚫ 定时器 /计数器</p>
<p>– 3个 1通道互补通用 16位定时器</p>
<p>– 1个 3通道互补输出 16位定时器</p>
<p>– 1个低功耗 16位定时器</p>
<p>– 3个高性能 16位定时器 /计数器,支持 PWM 互补,死区保护功能</p>
<p>– 1个可编程 16位定时器 PCA,支持捕获比较, PWM输出</p>
<p>– 1个超低功耗脉冲计数器 PCNT 具备低功耗模式下自动定时唤醒功能,最大定时达1024秒</p>
<p>– 1个 20位可编程看门狗电路,内建专用10KHz振荡器提供 WDT 计数</p>
<p>⚫ 通讯接口</p>
<p>– 2路 UART标准通讯接口</p>
<p>– 2路 LPUART低功耗通讯接口,深度 休眠 模式下可工作</p>
<p>– 2路 SPI 标准通讯接口</p>
<p>– 2路 I2C 标准通讯接口</p>
<p>⚫ 蜂鸣器频率发生器,支持互补输出</p>
<p>⚫ 硬件万年历 RTC 模块</p>
<p>⚫ 硬件 CRC-16/32 模块</p>
<p>⚫ 硬件 32位除法器</p>
<p>⚫ AES-128 硬件协处理器</p>
<p>⚫ TRNG 真 随机数发生器</p>
<p>⚫ 2通道 DMAC</p>
<p>⚫ 4*40 / 6*38 / 8*36 LCD驱动</p>
<p>⚫ 10字节 ID 号</p>
<p>⚫ 12位 1Msps采样的高速高精度 SARADC,内置运放,可测量外部微弱信号</p>
<p>⚫ 集成 3个多功能 运算放大器</p>
<p>⚫ 集成 6位 DAC 和可编程基准输入的 2路 VC</p>
<p>⚫ 集成低电压侦测器,可配置 16阶比较电 压 ,可监控端口电压以及电源电压</p>
<p>⚫ SWD 调试解决方案,提供全功能调试器</p>
<p>⚫ 工作条件: :-40 ~ 85 1.8 ~ 5.5V</p>
<p>⚫ 封装形式: QFN32/48,LQFP64/48,TSSOP28</p>
OK!!!
页:
[1]