单片机学习小组
直播中

陈键

7年用户 998经验值
擅长:可编程逻辑 电源/新能源
私信 关注

求大佬分享航顺HK32F030Mxx官方例程调试笔记

求大佬分享航顺HK32F030Mxx官方例程调试笔记

回帖(1)

乐延槐

2022-2-8 14:04:59
从今天开始,我将逐一调试航顺HK32F030Mxx官网例程,有兴趣的同学欢迎一起研究学习。
官方例程版本号:HK32F030Mxx_ExampleV1.0.7

手里没有例程的同学可以私信我,私信发给你。
简单粗暴,话不多说,例程有如下结构:

1 Reset Test
1.1 External Reset NRST Pin Test

1.2 Software Reset Test


1.3 Power Reset test


1.4 IWDG  Reset test


1.5 WWDG Reset test


1.6 LowPower Reset Test


2 Clock Test
1_External Inputclock test

2 LSI 114Khz RC oscillator test


3 PMU and PowerConsumption Test
1_SleepMode_WakeupBySystemTicker

2_SleepMode_WakeupByExit


3_DeepSleepMode_WakeupBySystemTicker


4_DeepSleepMode_WakeupByExit


5_StopModeWithRegLowPower_WakeupByExitInterrupt


6_StopModeWithRegLowPower_WakeupByAwuTimerInterrupt


7_StopModeWithRegLowPower_WakeupByBeeperAdcSampleInterrupt


8_StopModeWithRegLowPower_WakeupByExitEvent


9_StopModeWithRegLowPower_WakeupByAwuTimerEvent


10_StopModeWithRegLowPower_WakeupByBeeperAdcSampleEvent


4 Flash program_Erase test
1_FLASH_WriteAndRead_byte

2_FLASH_WriteAndRead_HalfWord


5 E2 program_Erase Test
1_EEPROM_WriteAndRead_byte

2_EEPROM_WR_Test


6 MCO
1_External Inputclock test

7 64BIT_UID
64BIT_UID

8 EXTI
External interrupt

9 IWDG
1_GPIO_ToggleAndIWDG

10 GPIO
1_GPIO_Toggle

2_GPIO_IOMUX_SO8N


3_GPIO_IOMUX_TSSOP(UFQFN)20


4_GPIO_IOMUX_TSSOP16


11 USART
1_USART1_TX_NOINT_RXINT

2_USART1_TxAndRxPinExchange


12 WWDG
WWDG

13 BEEP
BEEP

14 ADC
ADC_AnalogWatchdog

ADC_Basic


ADC差分输入


ADC外部触发


AWD唤醒功能


15 TIM
TIMER_PWM输入模式

TIMER6Steps


TIMER7PWMOutputs


TIMER触发ADC


TIMER单一脉冲输出


TIMER读取编码器信号模式


TIMER互补信号


TIMER基本模式


TIMER基本模式_TIM2


TIMER输出翻转


TIMER输出极性


TIMER输入捕获


TIMER同步模式


16 SPI
master

slave


17 LEDInRam
17 LEDInRam

18 IAP
IAP_App

IAP_Boot


一共是57个例程(定时器有几个是重复的),后面我们将逐一调试有代表性的例程。
1.reset
1.11.1 External Reset NRST Pin Test
可通过寄存器RCCͺCSR来判断MCU的复位源。


例程1.1是一个复位的程序


主要逻辑是
1.Uart_Config() 初始化串口,端口PA3和PD6分别作为串口的TX和RX.
  (1) 开启GPIOA和GPIOD的外设时钟RCC_AHBPeriph_GPIOA和RCC_AHBPeriph_GPIOD;
(2)UART1的外设使能RCC_APB2Periph_USART1
(3)配置GPIO的属性,和ST的库都是一样的,包括设置pin3,portA,AF功能,推挽方式, 无上拉电阻,速度高速10M,AF复用功能为AF1串口功能。
(4)设置串口传输参数,115200波特率,8位数据位(CR1),一位停止位,无奇偶校验位,无硬件流控制(CR3),发送器和接收器使能USART_CR1_RE,USART_CR1_TE。
(5)USART_CR1_UE ,UART使能
2.打印
3.Reset_Init();判断是上电复位POR还是引脚复位,并打印输出。
(1)复位标志位在两个寄存器中CR和CSR.为了区分,每个寄存器标志设置为8位,用第几位标识,高三位来表示寄存器。011是CSR,001是CR。这样在8位中就可以即表示标志位又表示寄存器。

(2)判断了寄存器之后,把高三位去掉,读出寄存器

(3)1进行左移相应的位数,和寄存器读出的值相与。如果不为0说明此位被置位。置位标志指示了复位原因
(4)打印输出复位原因
个人认为:这种方式稍微有点绕,标志位可以设置的比较简单,8位就行。也能迅速的定位到寄存器。缺点是不是太好理解。
注意:程序中有个bug:
程序中串口初始化当中有个参数带错了,USART1_TX_PIN_SOURCE是正确的参数。

后面有bug或者异常我也会标识出来,节省大家的时间。
现象比较明确,就是串口打印输出复位原因。程序执行和期望一样,调试通过。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分