火辣西米秀 发表于 2021-3-24 20:51

华大单片机HC32L110实用干货分享

本帖最后由 火辣西米秀 于 2021-3-24 20:56 编辑

<p>华大单片机HC32L110//HC32F003/HC32F005 系列芯片具有相同的UART外设资源,它们的printf代码可以通用。</p>

<p>本例程中使用P35引脚为printf输出引脚,波特率为19200,数据格式:1位起始位+8位数据位+1位停止位。</p>

<p>UART初始化代码如下:</p>

<p>void Debug_UartInit(void)</p>

<p>&nbsp;{</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; uint32_t u32Pclk1 =&nbsp; 0;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; uint32_t u32ReloadVal = 0;</p>

<p>&nbsp;&nbsp;&nbsp; &nbsp;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ///UART0_TXD/P35, 19200bps</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_GPIO-&gt;P3ADS_f.P35 = 0;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_GPIO-&gt;P35_SEL_f.SEL = 3;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_GPIO-&gt;P3DIR_f.P35 = 0;<br />
&nbsp;u32Pclk1 = Sysctrl_GetPClkFreq();</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; u32ReloadVal = 65536 - u32Pclk1 * 2 / 19200 / 32;<br />
&nbsp;&nbsp;&nbsp;&nbsp; M0P_TIM0-&gt;CR_f.CT = 0;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_TIM0-&gt;CR_f.MD = 1;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_TIM0-&gt;CR_f.TOGEN = 1;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_TIM0-&gt;ARR = u32ReloadVal;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_TIM0-&gt;CNT = u32ReloadVal;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_TIM0-&gt;CR_f.CTEN = 1;</p>

<p>&nbsp;&nbsp;&nbsp; &nbsp;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_UART0-&gt;SCON_f.DBAUD = 1;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_UART0-&gt;SCON_f.SM01 = 1;<br />
&nbsp;}</p>

<p><br />
UART发送单字节代码如下:</p>

<p>void Debug_Output(uint8_t u8Data)</p>

<p>&nbsp;{</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_UART0-&gt;SCON_f.REN = 0;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_UART0-&gt;SBUF = u8Data;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; while (TRUE != M0P_UART0-&gt;ISR_f.TI)</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; {</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; M0P_UART0-&gt;ICR_f.TICLR = 0;</p>

<p>&nbsp;}</p>

<p>printf函数重映射代码如下:</p>

<p>int fputc(int ch, FILE *f)</p>

<p>&nbsp;{</p>

<p>&nbsp;&nbsp;&nbsp; if (((uint8_t)ch) == &#39;\n&#39;)</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; {</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Debug_Output(&#39;\r&#39;);</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp; Debug_Output(ch);</p>

<p>&nbsp;&nbsp;&nbsp; return ch;</p>

<p>&nbsp;}<br />
/******以上代码在ddl.c中,也可以根据自己的架构放到用户自己相应文件中*******/<br />
主程序中代码如下:</p>

<p>int32_t main(void)</p>

<p>&nbsp;{</p>

<p>Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);</p>

<p>Sysctrl_SetPeripheralGate(SysctrlPeripheralBt, TRUE);</p>

<p>Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0, TRUE);</p>

<p>Debug_UartInit();<br />
&nbsp;&nbsp;&nbsp;&nbsp; while (1)</p>

<p>{&nbsp; &nbsp;</p>

<p>&nbsp;&nbsp; printf(&quot;printf test&nbsp; \r\n&quot;);</p>

<p>&nbsp;&nbsp; delay1ms(1000);</p>

<p>}</p>

<p>}</p>

<p>运行结果如下:</p>

<p>&nbsp;</p>

<p></p>

火辣西米秀 发表于 2021-3-24 20:58

<p><span style="font-size:16px;">如果需要工程文件, <span style="color: rgb(68, 68, 68); font-family: 微软雅黑; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">请下载测试工程</span></span></p>

<p>**** Hidden Message *****</p>

diablofeng 发表于 2021-11-12 22:44

<p>干货阿,感谢楼主的分享,我也要贡献一份力量</p>

江长活 发表于 2021-11-16 11:01

<p>华大单片机多人在用吗?稳定性如何,还有价格有优势吗?</p>

zhidai 发表于 2023-5-12 16:48

<p>学习一下</p>

火辣西米秀 发表于 2023-5-12 22:27

zhidai 发表于 2023-5-12 16:48
学习一下

<p>对大家有帮助就行</p>

zyhong2020 发表于 2023-8-4 15:36

<p>不错,,正在搞华大单片机</p>

zhiweihzx 发表于 2024-1-4 07:25

<p>fdsaf</p>

yuren9009 发表于 2024-4-13 16:22

<p>哇哇哇哇</p>

emma2015 发表于 2024-4-18 09:12

使用P35引脚为printf输出引脚,波特率为19200,数据格式:1位起始位+8位数据位+1位停止位

nightgodeye 发表于 2024-4-27 20:47

<p>学习一下学习一下</p>

rainterry 发表于 2024-4-29 10:11

<p>好像没有新唐好</p>

chungsiu 发表于 2025-1-20 16:59

<p>干货阿,感谢楼主的分享</p>
页: [1]
查看完整版本: 华大单片机HC32L110实用干货分享