完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在在初学PSOC,但是遇到了问题。
用定时器Terminalcountout中断控制 一个发光二极管每一秒钟闪烁一次,但是程序下进后二极管一直亮着,是不是没有响应中断啊? 我的程序代码: #include #include "PSoCAPI.h" // PSoC API definitions for all User Modules #pragma interrupt_handler Timer8_ISR_C /* extern void Timer8_EnableInt(void); extern void Timer8_DisableInt(void); extern void Timer8_Start(void); extern void Timer8_Stop(void); extern BYTE Timer8_bReadTimer(void); extern BYTE Timer8_bReadTimerSaveCV(void); extern void Timer8_WritePeriod(BYTE bPeriod); extern BYTE Timer8_bReadCompareValue(void); extern void Timer8_WriteCompareValue(BYTE bCompareValue); */ void main() { // Insert your main routine code here. //Timer8_WritePeriod(183); M8C_EnableGInt; Timer8_EnableInt(); Timer8_Start(); while(1); } void Timer8_ISR_C() { PRT0DR^ =0x02; } 芯片配置 Global Resources CPU_Clock =12 MHz VC1 =16 Divide 24 MHz SysClock by 16. VC2 =16 Divide VC1 by 16. VC3 Source =VC2 Set the source for VC3 as VC2. VC3 Divider =256 Divide VC2 by 256 (to produce a 366 Hz clock) User Module Parameters Timer8_1 Clock =VC3 Input 366 Hz clock from VC3. Capture =Low Not used. TerminalCountOut =Row_0_Output_0 For routing to Pin2[3]. CompareOut =None Not used. Period =182 Set to 182 and count down. Compare Value =0 Not used. Compare Type =Less Than Not used. Interrupt Type =Terminal Count To generate interrupt after the down counter reaches 0. Clock Sync =Sync To SysClk Synchronize to system clock. TC_PulseWidth =Full width Generate a full pulse width at every terminal count. InvertCapture =Normal Not used. 那个中断服务程序的框架在硬件配置好后Designer会自动生成吗?我没有看到框架生成,是不是构建Project的时候出了问题才这样的 |
|
相关推荐
3 个讨论
|
|
|
|
|
|
|
|
可以的。但要注意所加LJMP的位置。
如果在代码中不使用T8提供的函数,就要加在最开始处。 如果在代码中还要使用T8提供的函数,就只能加在最后面的中断返回前的位置,但这样可能会对T8函数的精度有影响(如果你的中断代码太多的话) 另外的方法是直接修改boot.tpl文件中相对应的地方,原理是相同的,就是把中断直接转移到自己的中断中。但此时T8的函数全部不能使用。下面是我改Sleep Timer 中断直接到自己中断的例子: 在boot.tpl文件中找到Sleep Timer的定位 org 64h处,将原来的`@INTERRUPT_25注销掉,加上转移指令。 org 64h ;Sleep Timer Interrupt Vector ;`@INTERRUPT_25` ljmp _isr_sleeptimer reti 如果对定时要求不高,只是产生一个简单的比较粗的时间定时的话,可以先考虑是否可以直接使用系统资源的Sleep Timer,而不使用T8。这样可以节省一个数字模块资源,做它用。这样才能充分发挥PSoC的特点。 做这些改动,要概念清楚,具备比较好的汇编的基础(不是说一定非常了解PSoC的汇编),知道汇编、中断、C代码中断的编写方法,以及它们之间的关系等等。所以我说“属于中高级的使用”。 尽管LZ说自己初学PSoC,但我觉的LZ应该是具备比较深厚其它8位或32位的功底的。你会很快成为PSoC高手的。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
742个成员聚集在这个小组
加入小组2012 浏览 1 评论
1773 浏览 1 评论
3561 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1705 浏览 6 评论
1473 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
358浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
255浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
364浏览 2评论
303浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
503浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 23:50 , Processed in 0.851603 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号