问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - 小华半导体
  • hc32l110使用定时器控制led灯亮灭 sos

    hc32l110使用定时器控制led灯亮灭,设置的是500ms亮,500ms灭,将程序写入单片机灯亮灭的时间远超500ms,使用的是官方开发板,系统时钟设置为24MHZ,定时器分频为16,重装载值为1499。求指导是什么原因引起的,谢谢 uint32_t SystemCoreClock = 4000000; //add clock source. void SystemCoreClockUpdate (void) // Update SystemCoreClock variable { SystemCoreClock = Clk_GetHClkFreq(); } /** ****************************************************************************** ** \brief 对MCU未引出IO端口进行默认配置. ** ** \param none ** \return none ******************************************************************************/ static void _HidePinInit(void) { #if !defined(HC32L110Cxxx) //20PIN MCU uint32_t tmpReg = M0P_CLOCK->PERI_CLKEN; M0P_CLOCK->PERI_CLKEN_f.GPIO = 1; #if defined(HC32L110Bxxx) //16PIN MCU M0P_GPIO->P0ADS &= 0x07; ///< P03配置为数字端口 M0P_GPIO->P3ADS &= 0xE3; ///< P32/P33/P34配置为数字端口 M0P_GPIO->P0DIR |= 0xF8; ///< P03配置为端口输入 M0P_GPIO->P3DIR |= 0x1C; ///< P32/P33/P34配置为端口输入 M0P_GPIO->P0PU |= 0xF8; ///< P03配置为上拉 M0P_GPIO->P3PU |= 0x1C; ///< P32/P33/P34配置为上拉 #endif M0P_CLOCK->PERI_CLKEN = tmpReg; #endif } /** ****************************************************************************** ** \brief Setup the microcontroller system. Initialize the System and update ** the SystemCoreClock variable. ** ** \param none ** \return none ******************************************************************************/ void SystemInit(void) { stc_clk_systickcfg_t stcCfg; // TODO 从Flash加载修调值并启用内部高速时钟(当前为手动设置24MHz) Clk_SetRCHFreq(ClkFreq24Mhz); // 设置内部高速时钟频率为24MHz Clk_Enable(ClkRCH, TRUE); // 启用内部高速时钟 SystemCoreClockUpdate(); // 更新系统核心时钟频率变量 _HidePinInit(); // 初始化未使用的隐藏引脚 // 配置系统定时器 DDL_ZERO_STRUCT(stcCfg); // 清零配置结构体 stcCfg.bNoRef = TRUE; // 不使用外部参考时钟(使用内核时钟) stcCfg.u32LoadVal = 0xFFFFFF; // 设置24位重载值(最大计数值) Clk_SysTickConfig(&stcCfg); // 应用SysTick配置 } #include "gpio.h" #include "IR_light.h" #include "bsp_key.h" #include "base_tim.h" extern volatile uint16_t msCounter; void system_clock(void); int main(void) { system_clock(); base_tim_init(); IR_light_Init(); while(1) { if (msCounter < 500) { IR_light_On(); } else { IR_light_Off(); } // 当计数器达到1000时重置 if (msCounter >= 1000) { msCounter = 0; } } } void system_clock(void) { //CLK INIT stc_clk_config_t stcClkCfg; stcClkCfg.enClkSrc = ClkRCH; stcClkCfg.enHClkDiv = ClkDiv1; stcClkCfg.enPClkDiv = ClkDiv1; Clk_Init(&stcClkCfg); } #include "base_tim.h" en_result_t enResult ; // 全局变量 volatile uint16_t msCounter = 0; //使用16分频 + 重装载值1499 定时器时钟= 24MHz/16=1.5MHz(0.6667μs/周期) 重装载值=1.5MHz×1ms−1=1499 1.5MHz/(1499+1)=1ms en_result_t base_tim_init(void) { uint16_t u16ArrData = 1499; // 自动重装载值 uint16_t u16InitCntData = 0; // 初始计数值; // 初始化定时器0 // ... Clk_SetPeripheralGate( ClkPeripheralBt, TRUE );//使能定时器0 //定时器基础配置 stc_bt_config_t timerConfig; //定时器配置结构体` timerConfig.enGate = BtGateDisable; //门控极性控制,门控禁止 timerConfig.enPRS = BtPCLKDiv16; //预分频器配置,16分频 timerConfig.enTog = BtTogDisable; //反转输出使能,禁止 timerConfig.enCT = BtTimer; //定时/计数功能选择,定时器功能 timerConfig.enMD = BtMode2; //计数模式配置,16位计数器/定时器 timerConfig.pfnTim0Cb = tim0_handler; //定时器0回调函数 //Bt初始化 if (Ok != Bt_Init(TIM0, &timerConfig)) { enResult = Error; } //中断使能 Bt_ClearIntFlag(TIM0); //清除中断标志 Bt_EnableIrq(TIM0); //使能更新中断 EnableNvic(TIM0_IRQn,3,TRUE); //设置重载值,计数值,启动计数 Bt_ARRSet(TIM0, u16ArrData); Bt_Cnt16Set(TIM0, u16InitCntData); Bt_Run(TIM0); return enResult; } void tim0_handler(void) { if (Bt_GetIntFlag( TIM0 )) { // 清除中断标志 Bt_ClearIntFlag(TIM0); msCounter++; } } #include "IR_light.h" //led---P03 void IR_light_Init(void) { Gpio_InitIO(0,3 ,GpioDirOut ); } void IR_light_On(void) { Gpio_SetIO(0,3,1); } void IR_light_Off(void) { Gpio_SetIO(0,3,0); } 根据代码中IR_light理论是500ms亮500ms灭为什么在硬件上灯亮灭一次时间远远超过500ms?

    小华半导体 hc32l110 单片机 技术交流 led灯 控制LED

    190浏览量 0回复量 关注量
  • 请问HC32LF136的开发板LPuart0如何复用? sos

    我在官方提供的样例库中将LPuart1修改成了PB10和PB11的脚复用成LPuart0,但是发现一直未复用成功,请问一下哪里配置错了吗?///

    复用 开发板 UART0 lpuart HC 小华半导体

    1623浏览量 0回复量 关注量
  • 有没有用过小华半导体芯片的小伙请教一下?

    [i=s] 本帖最后由 申小林一号 于 2024-6-28 09:56 编辑 [/i] 最近想做一些东西,成本相对来说有一点敏感,我们打算用100脚的M3的或者M33的芯片都行,但是不知道小华半导体的稳定性怎么样,有没有用小华半导体做过试验的呢?比如高低温试验和EMC实验。

    高低温 EMC 小华半导体 半导体芯片 国产芯片 单片机

    1216浏览量 1回复量 关注量
  • 小华半导体 sos

    请教一下,小华半导体的芯片 HC32F452和HC32F451由什么区别。

    HC32F4 HC 小华半导体 单片机 嵌入式 国产芯片

    1652浏览量 0回复量 关注量
  • 串口波特率不同,发送数据长度过长时会自动分包

    有没有小华的FAE帮我解答一下:HC32L136的串口0,使用PA10,PA9做串口引脚,在配置为模式3,2400波特率,偶检验下,串口发送数据大于42byte时会自动分为两部分发送,两部分数据发送时间相隔50ms,我更换波特率9600,4800,2400,1200,就换这几个值,小于等于2400成两包发,大于等于4800就是一包发,这个问题咋解决?

    串口 发送 小华半导体 单片机 国产芯片 MUC

    11308浏览量 14回复量 关注量
  • 求助HC32L110C6PA的内部温度ADC读取

    最近学习HC32L110遇到太多坑了,内部温度采集调试了很久都没搞出来,求大佬分享一下内部温度采集的程序,谢谢谢谢

    小华半导体 华大MCU HC32

    2067浏览量 2回复量 关注量
  • HC32F460PETB的Printf打印问题

    各位大佬,我已配置好USART,但是在调用函数的过程中,USART_ReadData()函数和USART_WriteData()都没问题,能正常接收和打印数据,但是如果调用printf函数就不行printf("Data Received OK!\n");打印不出来,请教一下是什么原因呢? 我看到在官方的例程中,他初始化了Printf函数 DDL_PrintfInit(BSP_PRINTF_DEVICE, 19200U, BSP_PRINTF_Preinit); 在这个函数中其实也是配置USART,但是为啥一定要先调用这个初始化函数呢?

    单片机 小华半导体

    4721浏览量 2回复量 关注量