- 博客(22)
- 收藏
- 关注
原创 先辑 HPM6E80 学习笔记 -SEI-BissC编码器读取及速度计算
/等待数据线重新拉高。//读取数据第四个指令步骤,配置为无时限接收16位数据,数据存入数据寄存器2,且将数据存入CRC校验寄存器(配置为数据寄存器5),参与CRC计算。//读取数据第五个指令步骤,配置为无时限接收17位数据,数据存入数据寄存器3,且将数据存入CRC校验寄存器(配置为数据寄存器5)//读取数据第六个指令步骤,配置为无时限接收2位数据,数据存入数据寄存器4,且将数据存入CRC校验寄存器(配置为数据寄存器5)//读取数据第三个指令步骤,配置为无时限接收1位数据,且忽略当前数据,不计算CRC。
2026-03-10 15:43:47
611
1
原创 先辑 HPM6E80 学习笔记 -ADC抢占模式采样(PWMV2计数器中心点触发采样)
2、ADC采样频率需要4分频,因为clk_adc_src_ahb0为200MHZ,ADC时钟频率最大为50MHZ。PWMv2发生器上桥导通中间点产生PWM1_TRG_0 ,50us触发ADC0,1,2抢占采样启动。1、需要注意ADC如果是作为电机系统使用,需要将时钟源配置为。2、内置DMA,可以直接把ADC转换结果写入内存,配置方便。抢占采样完成后,触发ADC0抢占采样完成中断,计算采样值。
2026-03-07 17:29:35
381
原创 先辑 HPM6E80 学习笔记 - PwmV2-三相互补输出功能
2、不能使用pwmv2_enable_counter(),库函数来分别使能通道的主定时器,会造成主定时器有误差,导致发生的PWM不同步。1、需要注意比较值0,1,2,3对应一组互补的PWM输出,映射时不能将2,3映射到PWM_B中,且0.1.2.3对应手册中的a.b.c.d.//关闭4比较点模式,使能2比较点模式, pwm_channel_1工作在成对模式,不需要配置。对于 PWM 通道 N=1/3/5/7,可工作在成对模式,或 2 个比较点。2+3),或选择 2 个比较点模式。
2026-03-07 17:06:19
473
原创 先辑 HPM6E80 学习笔记 - Qeiv2外设-ABZ功能
这是因为D-Cache(数据缓存)导致CPU和内存数据不同步,调试器只读到初始数据,而HPM就有ILM(指令本地内存),DLM(数据本地内存) 和SRAM,三个RAM, 理解下来应该是程序运行后,将程序指令及数据从FLASH拷贝到SRAM,然后需要运行哪段指令或者数据,就将其拷贝至ILM和DLM,因为这两段RAM在CPU中,运行速度最快,这样就相当于一个D-Cache, watch窗口一直读的是SRAM中的数据,但这个数据一直没更新,导致窗口不更新。//配置为400US周期,触发快照功能。
2026-03-05 09:35:11
427
原创 先辑 HPM6E80 学习笔记 - UART-DMA接收及发送
1、HPM有 XDMA 和 HDMA 两个DMA控制器,功能强大,此次只实现基础功能传输,后面如果用到高级功能,再单独学习。2、DMAMUX,可以使DMA通道映射到任意外设,其中64个输出通道指的是 XDMA-32个, HDMA-32个。使用DMA接收串口数据,并且在串口空闲中断中,将接收到的数据使用DMA发送,同时在发送完成中断中置标志。uart_rx_trigger_dma 串口接收DMA配置。ch_num: DMA通道选择,DMA可配置32个通道。/* DMA中断 */// 注册DMA中断函数。
2026-03-01 14:58:23
546
原创 先辑 HPM6E80 学习笔记 - UART中断接收及发送
***** 使用PAO -USATR0–TX PA1- USART0–RX ,在接受中断中收发数据 *****/3、配置串口,需注意有时钟频率的配置,并且串口有FIFO功能,最大32个字节。1、先使能串口时钟,默认时钟源为PLL1CLK0,默认时钟为80MHZ。2、复用IO口为UART0, HPM复用较为简单。
2026-03-01 14:41:52
174
原创 先辑 HPM6E80 学习笔记 - GPIO控制
2、配置对应IOC控制器,一般只需要配置 HPM_IOC通用IO配置, PIOC和BIOC一般用不着,3、配置GPIO 输入/输出 ,相关寄存器说明在:574页。PB25按键上升延,触发中断,中断中闪烁PE2灯。4、使能中断,需要注意HPM中断函数需要自己注册。PB25按键上升延,触发中断,中断中闪烁PE2灯。//PIOC 电源管理域IO控制器。//BIOC 电池备份域IO控制器。//HPM中断函数需要自己注册。//IOC 通用IO控制器。寄存器配置在:562页。
2026-02-27 17:20:04
388
原创 先辑 HPM6E80 学习笔记 - 生成程序
需要注意此程序不能移动位置,需要将对应库文件移动到工程文件夹下,并重新添加进工程。观看下面的博主视频,使用先辑SDK,生成标准GPIO程序,根据硬件修改对应宏。
2026-02-27 14:38:52
254
原创 基于STM32的Can_Festival调试问题3 -- SDO修改心跳时间过很久才有反应
修改心跳时间,最终会进入lifegrd.c 文件中的OnHeartbeatProducerUpdate()函数,原函数如图1;在注册心跳的回调函数时,原函数将Value位赋值为0,导致在SetAlarm函数中设置NextTime==当前的Time_Cnt,进不了本次的中断,只能等Time_Cnt溢出,在++到NextTime才能触发执行回调函数,也就是一个周期,才能正常。图1将这段程序改为如下图就可以了...
2020-06-02 17:00:16
1428
1
原创 基于STM32的Can_Festival调试问题2 -- SDO发送错误
用SDO发送 修改 0X6040控制字节 为0X070D,返回 0X80错误。发现在SDO.C 函数UNS8 proceedSDO (CO_Data* d, Message *m),中有关于长度的判断,,之后补0就可以了。。我记得Copley好像不需要补0啊?
2020-06-02 16:57:39
2053
3
原创 基于STM32的Can_Festival调试问题1 -- 心跳包和TPOD发送时间不正确
图 1我设定在1MS的软定时器中 TimeCnt++;同时调用TimeDispatch()// 执行回调函数。因为在 SetAlarm() 这个注册函数中value值是根据timerscfg.h中的宏// The timer is incrementing every 8 us.//#define MS_TO_TIMEVAL(ms) ((ms) * 125)//#define US_TO_TIMEVAL(us) ((us)>>3)来确定分辨率的,我的Time_CNT 1ms +.
2020-06-02 16:51:51
1957
1
原创 洗牌,发牌C程序
洗牌需要随机函数 rand()如要产生[m,n]范围内的随机数num,可用:int num=rand()%(n-m+1)+m;在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同。所以要包含time.h头文件,然后使用srand(time(0))来使用当前时间使...
2018-10-27 23:12:26
333
原创 200~300之间不能被3整除的数,5个一行输出。
这道题的关键是怎么样5个一行输出 ,用一个变量 使其自加 为5时,输出换行, 其他的时候执行不换行的 输出 函数。
2018-10-23 15:35:56
4169
原创 求两个数的最大公约数,最小公倍数。
m n最大公约数>=最小的数, 最小公倍数一定<=m*n故先分清楚 m , n 的 大小。最大公约数需从1~ 最小的数循环, 当 n%i==0 时 i为其约数最小公倍数从 最大的数到 m*n循环 ,当都可整除时就为其最小公倍数。PRINTF 跳出循环...
2018-10-23 13:40:21
273
原创 如何判断一个素数?100——200之间的素数怎么判断?
素数是 除了1和它本身,没有其他因数的 数,1不是素数,用for循环 ,从2开始 ,如果n和i相除不为0,则i为其因数 ,则n不是素数
2018-10-23 12:42:16
479
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅